Problem mit dynamisch laden ein Benutzer-Steuerelement auf die Schaltfläche klicken
Ich habe eine Seite, in der ich bin laden ein user control dynamisch, wie folgt:
Standard.aspx:
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
Standard.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
var ctrl = LoadControl("~/UserCtrl1.ascx");
ctrl.ID = "ucUserCtrl1";
PlaceHolder1.Controls.Add(ctrl);
}
Unten ist der code für UserCtrl1.ascx
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
<br />
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
Ich bin dynamisch laden ein anderer Benutzer die Kontrolle, wenn der Button1 geklickt wird
UserCtrl1.ascx.cs
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "UserControl - 1 button clicked!";
var ctrl = LoadControl("~/UserCtrl2.ascx");
ctrl.ID = "ucUserCtrl2";
PlaceHolder2.Controls.Add(ctrl);
}
Unten ist das markup für UserCtrl2.ascx
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label2" runat="server"></asp:Label>
<asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button2_Click" />
</ContentTemplate>
</asp:UpdatePanel>
UserCtrl2.ascx.cs
protected void Button2_Click(object sender, EventArgs e)
{
Label2.Text = "UserControl - 2 button clicked!";
}
Nachdem die Seite geladen, wenn ich auf den Button1 in UserCtrl1 das click-Ereignis ausgelöst, und ich bin in der Lage, um zu sehen, das Label1-text. Es ist auch richtig, lädt der UserCtrl2, aber wenn ich auf den Button2 in UserCtrl2 das click-Ereignis dosent Feuer und noch schlimmer, wenn ich auf den Button2 zweimal die UserCtrl2 Kontrolle dissappears von der Seite. Wie kann ich dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit der zweiten Steuerung ist, dass Sie loding es erst nach dem Klick auf Taste 1. Aber wenn einige andere (nicht Taste 1-Klick) postback geschieht Ihre zweite Steuerelement nicht geladen.
Eines möglichen fixes sparen Sie einige Flags (z.B. im ViewState), die Ihnen helfen, um zu bestimmen, wenn die zweite Steuerung geladen werden soll (und die Last beim laden der Seite).