RadPanelBarコントロールは、アイテムが動的に追加された後に消えます
質問
Telerik RadPanelBarコントロールについて質問があります。
たとえば、フォームにRadPanelBarコントロールがあります:
<telerik:RadPanelBar ID="testPanelBar" runat="server">
</telerik:RadPanelBar>
および実行時にこのRadPanelBarに新しいアイテムを追加するボタン:
RadPanelItem newParentItem = new RadPanelItem();
RadPanelItem newChildItem = new RadPanelItem();
newChildItem.Controls.Add(new RadTextBox());
newChildItem.Text = "wazzap";
newParentItem.Items.Add(newChildItem);
languagesPanelBar.Items.Add(newParentItem);
ボタンをクリックすると、すべての子コントロールとともに新しいRadPanelItemが追加されます(この場合は子アイテムのRadTextBoxです)
ボタンが2回クリックされると、2番目のRadPanelItemがすべてのコントロールとともに追加されますが、今回は
RadTexBoxコントロールは、最初のRadPanelItemから消えました。
ボタンが3回クリックされたときにも同じように、すべてのコントロールで新しいアイテムが追加されますが、RadTextBoxは1番目と2番目のアイテムから消えます。
アイテムを動的に追加するときに何か間違ったことをしていますか?
ありがとう!
解決
これは、他の動的に作成されたコントロールに追加された動的に作成されたコントロールがポストバック後に失われるために発生します。ページを読み込むたびにそれらを再作成する必要があります。私の知る限り、この問題の回避策はありません。 Pageクラスでも簡単に再現できます。page_loadでControls.Add(new TextBox());を試してください。その後、ポストバック後、同じコードは新しい(2番目の)テキストボックスを生成しませんが、後で再作成します。
すべてのPanelBarアイテム(動的に作成されたものも含む)はクライアントでシリアル化され、ポストバックがサーバーで再作成された後。そして、これが彼らが失われない理由です。ただし、同じことがRadPanelItemオブジェクトの子コントロールには適用されません。