2012-03-30 9 views
0

Ich erlebe das fast gleiche Problem in dieser Frage angegeben. Kann jemand bitte die Antwort dafür posten? Die Frage wird nicht klar beantwortet.C# - dynamisch-Laden-ein-Benutzer-Kontrolle-auf-Button-Klick

Issue with dynamically loading a user control on button click

In dieser vorgenannten Frage, er lädt die Steuerung zu einem Platzhalter in der ersten Benutzersteuerung. Mein Szenario ist etwas anders. Mein Szenario ist, ich habe eine einzelne aspx-Seite, UserControl1 und UserControl2. Am Anfang werde ich UserControl1 auf Seite laden. Dann muss ich BenutzerControl1 entladen und UserControl2 auf Seite laden, wenn Benutzer auf eine Schaltfläche von UserControl1 klickt.

+0

Was genau das verstehst du nicht? Was hast du probiert? – walther

+0

@Walther - In der markierten Antwort fügt "~/UserCtrl2.ascx" PlaceHolder2 vom Ereignis Button1_Click() hinzu. Aber PlaceHolder2 ist in Default.aspx vorhanden und Button1 ist in UserCtrl1.ascx. Und SecondControlLoaded viewstate ist mit Default.aspx.cs verbunden, denke ich. Aber da ist es in UserCtrl1.ascx.cs verlinkt Und bitte sehen Sie Kumars Kommentar in der markierten Antwort. "Kannst du bitte den kompletten Code posten? Ich vermute, dass SecondControlLoaded eine bool Eigenschaft in UserCtrl1 ist, die den Wert in viewstate speichert ..." Es wäre sehr hilfreich wenn du den kompletten Code posten könntest. – mlg

Antwort

0

Sie benötigen einen benutzerdefinierten Ereignishandler für UserControl1 und Blase das Ereignis bis zu der Seite zu erstellen, wenn die Schaltfläche geklickt wird.

Erstellen eines benutzerdefinierten Ereignishandler für UserControl1:

public event EventHandler UpdateButtonClick; 

public void OnUpdateButtonClick(EventArgs e) 
{ 
    if (UpdateButtonClick!= null) 
     UpdateButtonClick(this, e); 
} 

den Ereignishandler zuweisen für die UserControl1:

<uc:UserControl1 ID="UserControl1" runat="server" 
    OnUpdateButtonClick="UserControl1_UpdateButtonClick" ... /> 

Behandeln Sie das Ereignis in der Code-Behind:

protected void UserControl1_UpdateButtonClick(object sender, EventArgs e) 
{ 
    UserControl1.Visible = false; 
    UserControl2.Visible = true; 
} 
+0

Danke @james. Ich werde diesen Code ausprobieren und Sie wissen lassen. – mlg

+0

Entschuldigung für sehr späte Antwort. Aber ich muss immer noch alle Benutzersteuerelemente in die Seitenladung laden, richtig? – mlg

+0

Ja, Sie können sie auch dynamisch laden. Statt 'Page_Load' würde ich' OnInit' jedoch überschreiben und sie dort zur Kontrollsammlung hinzufügen. –