如何在回发之间保存树视图节点的状态(展开/折叠)?

时间:2009-03-05 13:49:07

标签: c# asp.net

DUPE C# Treeview state expanded

见上文......

3 个答案:

答案 0 :(得分:1)

我认为这取决于你的树视图。 Telerik树视图通过viewstate ...

执行此操作

http://www.telerik.com/community/forums/aspnet/treeview/how-do-i-maintain-treeview-state-after-postback.aspx

......以下帖子提出了一种手工推广的方法......

http://blog.binaryocean.com/PermaLink,guid,23808645-43b5-4e2a-afb1-53dc8da35636.aspx

我没有尝试过任何一种解决方案,因此无法为它们担保,但它们看起来很有希望。

答案 1 :(得分:0)

您可以尝试为树视图控件启用视图状态。

答案 2 :(得分:0)

使用此功能。在回发时将其保存在视图状态中,并使用视图状态将其呈现为相同状态

<% List<TreeViewItem> checkedNodes = ViewData["TreeView1_checkedNodes"] as ist<TreeViewItem>; %>

<%= Html.Telerik().TreeView()
.Name("Tree")    
.ShowCheckBox(true)
.ClientEvents(ev => ev.OnChecked("OnCheck")
)
.BindTo(Model, mappings =>
{
    mappings.For<GridWithWindow.Jar>(binding => binding
        .ItemDataBound((item, jag) =>
            {
                item.Text = jag.TreeName;
                item.Value = jag.TreeName;

                if (checkedNodes != null)
                {
                    var checkedNode = checkedNodes
                                        .Where(e => e.Value.Equals("ddd"))
                                        .FirstOrDefault();
                    item.Checked = checkedNode != null ? checkedNode.Checked : false;
                }                    

            })
            .Children(jag => jag.FirstLevelIList));
    mappings.For<GridWithWindow.Jaguar.FirstLevel>(binding => binding
        .ItemDataBound((item, frst) =>
            {
                item.Text = frst.FirstLevelName;
                item.Value = frst.FirstLevelName;
            })