I controlli RadPanelBar scompaiono dopo che gli elementi sono stati aggiunti in modo dinamico
Domanda
Ho una domanda sul controllo Telerik RadPanelBar.
Ad esempio abbiamo un controllo RadPanelBar sul modulo:
<telerik:RadPanelBar ID="testPanelBar" runat="server">
</telerik:RadPanelBar>
e un pulsante che aggiunge un nuovo elemento a questo RadPanelBar in fase di esecuzione:
RadPanelItem newParentItem = new RadPanelItem();
RadPanelItem newChildItem = new RadPanelItem();
newChildItem.Controls.Add(new RadTextBox());
newChildItem.Text = "wazzap";
newParentItem.Items.Add(newChildItem);
languagesPanelBar.Items.Add(newParentItem);
quando faccio clic sul pulsante, viene aggiunto il nuovo RadPanelItem con tutti i controlli figlio (in questo caso è RadTextBox nell'elemento figlio)
quando si fa clic sul pulsante una seconda volta, viene aggiunto il secondo RadPanelItem con tutti i controlli, ma questa volta
Il controllo RadTexBox è scomparso dal primo RadPanelItem.
E lo stesso quando si fa clic sul pulsante per la terza volta, il nuovo elemento viene aggiunto con tutti i controlli, ma RadTextBox scompare dal 1 ° e 2 ° elemento.
Sto facendo qualcosa di sbagliato durante l'aggiunta dinamica di elementi?
Grazie!
Soluzione
Ciò accade perché i controlli creati dinamicamente aggiunti ad altri controlli creati dinamicamente vengono persi dopo un postback. È necessario ricrearli ad ogni caricamento della pagina. Per quanto ne so non c'è soluzione alternativa per questo problema. Puoi riprodurlo facilmente anche con la classe Page, su page_load prova Controls.Add (new TextBox ()); Quindi, dopo un postback, lo stesso codice non genererà una nuova (seconda) casella di testo, ma ricrea la successiva.
Tutti gli elementi PanelBar (anche quelli creati dinamicamente) sono serializzati sul client e dopo che un postback viene ricreato sul server. Ed è per questo che non si perdono. Tuttavia, la stessa cosa non si applica ai controlli figlio dell'oggetto RadPanelItem.