Les contrôles RadPanelBar disparaissent après l'ajout dynamique d'éléments à des éléments

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

  •  05-07-2019
  •  | 
  •  

Question

J'ai une question sur le contrôle Telerik RadPanelBar.

Par exemple, nous avons un contrôle RadPanelBar sur le formulaire:

        <telerik:RadPanelBar ID="testPanelBar" runat="server">
        </telerik:RadPanelBar>

et un bouton qui ajoute un nouvel élément à cette RadPanelBar lors de l'exécution:

        RadPanelItem newParentItem = new RadPanelItem();
        RadPanelItem newChildItem = new RadPanelItem();
        newChildItem.Controls.Add(new RadTextBox());
        newChildItem.Text = "wazzap";
        newParentItem.Items.Add(newChildItem);
        languagesPanelBar.Items.Add(newParentItem);

Lorsque je clique sur le bouton, un nouveau RadPanelItem est ajouté avec tous les contrôles enfants (dans ce cas, il s'agit de RadTextBox dans l'élément enfant)

lorsque le bouton est cliqué une deuxième fois, le deuxième RadPanelItem est ajouté avec tous les contrôles, mais cette fois Le contrôle RadTexBox a disparu du premier RadPanelItem.

Et même lorsque le bouton est cliqué pour la troisième fois, un nouvel élément est ajouté avec tous les contrôles, mais RadTextBox disparaîtra des premier et deuxième éléments.

Est-ce que je fais quelque chose de mal lors de l'ajout dynamique d'éléments?

Merci!

Était-ce utile?

La solution

Cela se produit parce que les contrôles créés dynamiquement ajoutés à d'autres contrôles créés dynamiquement sont perdus après une publication. Vous devez les recréer à chaque chargement de page. Autant que je sache, il n’existe pas de solution de contournement à ce problème. Vous pouvez aussi facilement le reproduire avec la classe Page. Sur chargement_page, essayez Controls.Add (new TextBox ()); Ensuite, après une publication, le même code ne générera pas de nouvelle (deuxième) zone de texte, mais recréera la dernière.

Tous les éléments PanelBar (même ceux créés dynamiquement) sont sérialisés sur le client et sont recréés après une publication sur le serveur. Et c'est pourquoi ils ne sont pas perdus. Cependant, la même chose ne s'applique pas aux contrôles enfants de l'objet RadPanelItem.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top