0

我有一个关于 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)

当第二次单击按钮时,第二个 RadPanelItem 与所有控件一起添加,但这次 RadTexBox 控件从第一个 RadPanelItem 中消失了。

第三次单击按钮时相同,所有控件都添加了新项目,但 RadTextBox 将从第一个和第二个项目中消失。

动态添加项目时我做错了吗?

谢谢你 !

4

1 回答 1

1

发生这种情况是因为添加到其他动态创建的控件的动态创建的控件在回发后丢失。您需要在每次页面加载时重新创建它们。据我所知,这个问题没有解决方法。您也可以使用 Page 类轻松重现它,在 page_load 上尝试 Controls.Add(new TextBox()); 然后在回发之后,相同的代码不会生成新的(第二个)文本框,而是会重新创建后者。

所有 PanelBar 项目(甚至是动态创建的项目)都在客户端上序列化,并且在服务器上重新创建回发之后。这就是他们没有迷路的原因。但是,同样的事情不适用于 RadPanelItem 对象的子控件。

于 2009-06-16T13:45:56.450 回答