Come generare dinamicamente combinazione di ASP.NET i controlli utente?
-
01-07-2019 - |
Domanda
Ho diversi controlli utente, diciamo A
, B
, C
e D
.Sulla base di alcune input casuale, ho bisogno di generare una combinazione di questi.Per es.se l'ingresso è 2a3d1a2c
Ho bisogno di mostrare due l'Una, 3 D dopo di che, una volta, etc.
Ho anche bisogno di stabilizzare clientid in modo per loro di funzionare correttamente.Perché ognuno di questi controlli di utilizzare i loro ClientID
proprietà per raccogliere l'input su se stessi.Per es.controllo utente Una genera internamente un input di nome this.ClientID + "$input1"
, e raccoglie il suo ingresso dalla richiesta come Request[this.ClientID + "$input1"]
.Poiché non ci possono essere più di uno, ciascuno deve avere la stessa (unique) ClientID
dopo il postback al fine di ottenere gli ingressi corretti dalla richiesta.
Soluzione
Per aggiungere controlli in modo dinamico, è possibile utilizzare un pannello come un luogo di titolare, dire
<asp:Panel ID="ControlPlaceholder" runat="server" />
Quindi, sul lato server, è possibile aggiungere oggetti ad esso in questo modo:
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
Se si aggiungono i controlli durante il vostro evento Page_Load e utilizzare un coerente metodo di generazione di controlli' Id (come un semplice conteggio di cui sopra), quindi qualsiasi viewstate o associazioni eventi sarà re-bound per il diritto oggetto su un postback.