我对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将从第一和第二项消失。

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

谢谢!

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top