Wie dynamisch Kombination von Benutzersteuerungen ASP.NET generieren?
-
01-07-2019 - |
Frage
ich mehrere Bedienelemente haben, lassen Sie uns sagen A
, B
, C
und D
. Basierend auf einem zufälligen Eingang, ich brauche eine Kombination aus diesen zu erzeugen. Für z.B. wenn der Eingang 2a3d1a2c
ist brauche ich zwei der A des zeigen, 3 D's danach, ein A wieder usw.
ich muß auch clientid die um Stabilisierung für sie richtig zu arbeiten. Da jedes dieser Steuerelemente verwenden, um ihre eigenen ClientID
Eigenschaft, um die Eingaben auf sich selbst zu sammeln. Für z.B. Eine Benutzersteuerung erzeugt intern einen Eingang this.ClientID + "$input1"
benannt und sammelt seine Eingabe von der Anfrage wie Request[this.ClientID + "$input1"]
. Da es mehr als ein A, A jeweils die gleiche (unique) ClientID
nach dem Postback haben, um braucht korrekte Eingaben von Anfrage zu erhalten.
Lösung
Um Steuerelemente dynamisch hinzufügen, können Sie ein Panel als Platzhalter verwenden, sagen
<asp:Panel ID="ControlPlaceholder" runat="server" />
Dann auf der Serverseite können Sie Objekte, um es wie so hinzufügen:
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
Wenn Sie die Steuerelemente, um es während des Page_Load Ereignis hinzufügen und eine konsistente Methode der Kontrollen IDs zu erzeugen (wie eine der einfache Zählung oben), werden alle Ansichtszustand oder Ereignisbindungen nach rechts Objekt neu gebunden werden, auf ein Postbacks.