2009-06-16 71 views
0

我有一个关于Telerik RadPanelBar控件的问题。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将从第一项和第二项中消失。

我在动态添加项目时做错了什么?

谢谢!

回答

1

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

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

+0

嗨。感谢您的回复 !还有一个小问题:) 孩子RadPanelItem呢? 它是动态创建的,并且项目本身在回发后不会丢失。 – shkipper 2009-06-16 14:14:48