据我所知,根据Telerik的以下指南,我下面的内容应该足以在我的用户控件中保持RadTreeView的状态。但事实并非如此。
在MainPage.aspx中:
<telerik:RadPersistenceManager ID="RadPersistenceManager1" runat="server">
</telerik:RadPersistenceManager>
在用户控件的.aspx中:
<telerik:RadPersistenceManagerProxy ID="RadPersistenceManagerProxy1" runat="server">
<PersistenceSettings>
<telerik:PersistenceSetting ControlID="RadTreeView1" />
</PersistenceSettings>
</telerik:RadPersistenceManagerProxy>
在用户控件的代码后面:
private RadPersistenceManager _persistenceManager;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_persistenceManager = RadPersistenceManager.GetCurrent(Page);
if (!IsPostBack)
_persistenceManager.LoadState();
}
protected void RadTreeView1_NodeCheck(object sender, RadTreeNodeEventArgs e)
{
_persistenceManager.SaveState();
}
(我还尝试在主页上调用LoadState()和SaveState()(分别在非回发的page_load和回发的pre_render中)。
但在这两种情况下,控制权的状态都在各州持续存在。
需要做些什么才能让它发挥作用?
我建议您从这个演示开始,并修改它以匹配您的设置:http://demos.telerik.com/aspnet-ajax/treeview/examples/applicationscenarios/persisting-treeview-settings/defaultcs.aspx?product=persistenceframework.
此外,如果您对树视图使用按需加载,这将不起作用。在这种情况下,当您尝试保存/加载项目的状态时,这些项目不会被加载。