Kısmi geri gönderimleri olan bir güncelleştirme panelinin içine dinamik olarak denetimler ekleme konusunda sorun yaşıyorum. Dinamik denetimlerle ilgili birçok makale okudum ve bunları geri bildirimlerle nasıl ekleyeceğinizi ve sürdüreceğimi anlıyorum, ancak bu bilgilerin çoğu geçerli değil ve kısmi geri göndermeler için çalışmayacak. Onları UpdatePanels ile eklemek ve sürdürmekle ilgili yararlı bilgiler bulamıyorum. Mümkünse bir web servisi oluşturmadan bunu yapmak istiyorum. Bazı yararlı bilgiler için herhangi bir fikir veya referans var mı?Bir Güncelleştirmeler İçinde Kullanıcı Denetimlerinin Programlı Olarak Eklenmesi
cevap
Sanırım, asp.net programcıları için sık karşılaşılan sorunlardan bir tanesi ama aslında ne olduğunu bildiğinizde doğru olması zor değil (her zaman sizin bakış açınızı unutmayın!). Aşağıdaki kod parçası, işlerin nasıl yapılabileceğini açıklamaktadır. Kullanıcının, güncelleme panosunun içindeki sayfaya kullanıcı denetimi ekleyecek bir eylemi tetikleyecek bir menüyü tıklayabileceği basit bir sayfadır.
(Bu kod from here ödünç ve bu konuyla ilgili birçok bilginin daha vardır)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SampleMenu1.aspx.cs" Inherits="SampleMenuPage1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Sample Menu</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Menu ID="Menu1" runat="server" OnMenuItemClick="Menu1_MenuItemClick">
<Items>
<asp:MenuItem Text="File">
<asp:MenuItem Text="Load Control1"></asp:MenuItem>
<asp:MenuItem Text="Load Control2"></asp:MenuItem>
<asp:MenuItem Text="Load Control3"></asp:MenuItem>
</asp:MenuItem>
</Items>
</asp:Menu>
<br />
<br />
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Menu1" />
</Triggers>
</asp:UpdatePanel>
</form>
</body>
</html>
ve arkasında kod
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class PlainSampleMenuPage : System.Web.UI.Page
{
private const string BASE_PATH = "~/DynamicControlLoading/";
private string LastLoadedControl
{
get
{
return ViewState["LastLoaded"] as string;
}
set
{
ViewState["LastLoaded"] = value;
}
}
private void LoadUserControl()
{
string controlPath = LastLoadedControl;
if (!string.IsNullOrEmpty(controlPath))
{
PlaceHolder1.Controls.Clear();
UserControl uc = (UserControl)LoadControl(controlPath);
PlaceHolder1.Controls.Add(uc);
}
}
protected void Page_Load(object sender, EventArgs e)
{
LoadUserControl();
}
protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
MenuItem menu = e.Item;
string controlPath = string.Empty;
switch (menu.Text)
{
case "Load Control2":
controlPath = BASE_PATH + "SampleControl2.ascx";
break;
case "Load Control3":
controlPath = BASE_PATH + "SampleControl3.ascx";
break;
default:
controlPath = BASE_PATH + "SampleControl1.ascx";
break;
}
LastLoadedControl = controlPath;
LoadUserControl();
}
}
.
Temel olarak bu. Denetimlerin kendileri sayfaya dinamik olarak eklendiklerinde (kullanıcı bir menü maddesini tıklattığında, updatePanel içinde (aslında updatePanel öğesindeki placeHolder içinde) ViewLink'in LastLoadedControl ile tutulduğunu açıkça görebilirsiniz. sunucuya asenkron geri gönderme
fazla bilgi de burada bulunabilir.
- http://aspnet.4guysfromrolla.com/articles/081402-1.aspx
- http://aspnet.4guysfromrolla.com/articles/082102-1.aspx
ve tabiki the website that holds the example code burada kullanıyorum.
Yukarıda belirtilen yöntemi kullanan bir olayın işlenirken LoadUserControl() işlevinin iki kez çağrılmasıyla karşılaştım. Bazı diğer makalelere okudum ve sana modifikasyon göstermek istiyorum:
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
if (!string.IsNullOrEmpty(CurrentUserControl))
LoadDataTypeEditorControl(CurrentUserControl, panelFVE);
}
2) ayarlamak unutmayın:
1) yerine Page_Load Kullanımı LoadViewstate kullanıcı denetimi yüklemeye kontrol id usercontrol yüklerken:
private void LoadDataTypeEditorControl(string userControlName, Control containerControl)
{
using (UserControl myControl = (UserControl) LoadControl(userControlName))
{
containerControl.Controls.Clear();
string userControlID = userControlName.Split('.')[0];
myControl.ID = userControlID.Replace("/", "").Replace("~", "");
containerControl.Controls.Add(myControl);
}
this.CurrentUserControl = userControlName;
}
bu deneyin:
Literal literal = new Literal();
literal.Text = "<script type='text/javascript' src='http://www.googleadservices.com/pagead/conversion.js'>";
UpdatePanel1.ContentTemplateContainer.Controls.Add(literal);
Sen repla edebilirsiniz İstediğiniz herhangi bir HTML içeriğiyle değişmez içeriği ...
- 1. Prestashop oturum kapatma kullanıcı programlı olarak
- 2. UIView, Swift içinde programlı olarak nasıl taşınır
- 3. Bir düzen içinde ImageButton ile bir program şişirmek Programlı olarak
- 4. Bir Word Belgesine Programlı Olarak Bir Satır Aralığının Eklenmesi (Paragraf Kesintisiz Değil)
- 5. İçindekilerle programlı olarak bir UIImage nasıl oluşturulur
- 6. Bir hizmet sağlayıcısını programlı olarak istisnai uygulayan jersey içinde kaydetme
- 7. ImageView'yi programlı olarak göster
- 8. Kullanıcı Denetimi Silverlight Kılavuz Sütunu'na programlı olarak eklemek mümkün mü?
- 9. UISwitch'i Programlı Olarak Oluşturma
- 10. Programlı RelativeLayout içinde ImageView Hizalayamıyorum
- 11. Resimdeki iletinin gövdesine C# içinde eklenmesi #
- 12. Odağı programlı olarak çıkarın
- 13. ASP.NET: Görünüm durumu ve programlı ekleyerek kullanıcı
- 14. NSPopover, programlı olarak
- 15. Klavyeden geçirilebilir UIWebView içinde klavye gösterme Programlı olarak
- 16. UITabBarItem başlığını programlı olarak ayarlayın?
- 17. iOS: Çalışma zamanı içinde programlı olarak birden fazla UIImageViews ekle
- 18. Android'de programlı olarak MMS gönderme
- 19. Android içinde programlı olarak uygulama kısayollarını nasıl ekleyebilirim
- 20. Git html ile etkileşimli olarak bir hunk parçasının eklenmesi --patch
- 21. Varsayılan değer olarak geçerli tarihin MySQL olarak eklenmesi + 30 gün içinde MySQL
- 22. JSP dosyalarının yay ve dinamik olarak eklenmesi
- 23. Bir .png'yi nasıl programlı olarak düzenlersiniz?
- 24. Programlı Olarak Bir Durum Makinesi Oluşturun
- 25. Programlı olarak GridView'a bir OnRowDelete ekleyin
- 26. Bir iPad uygulamasını programlı olarak nasıl kapatabilirim?
- 27. Programlı olarak bir wpf datagrid öğesini sıralayın
- 28. Bir uygulama için programlı olarak mantığı oku
- 29. Bir Görünümün Programlı Olarak Yerçekiminin Ayarlanması
- 30. Woocommerce'de nasıl bir kupon programlı olarak uygularım?
Bunu yapmaya çalıştığınız kodu yükleyebilir misiniz? –