I controlli RadPanelBar scompaiono dopo che gli elementi sono stati aggiunti in modo dinamico

StackOverflow https://stackoverflow.com/questions/1001259

  •  05-07-2019
  •  | 
  •  

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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top