FineUI 官方论坛

标题: 【已解决】树形控延迟加载后无法折叠 [打印本页]

作者: liuweisaint    时间: 2015-1-18 17:05
标题: 【已解决】树形控延迟加载后无法折叠
参照 Demo的例子,写了一个延迟加载。页面如下:

    <form id="form1" runat="server">
    <fageManager ID="ageManager1" runat="server" />
    <f:Tree ID="TreeDepartment" EnableCollapse="true" Width="650px"
        ShowHeader="true" Title="部门列表" AutoLeafIdentification="false" runat="server">
    </f:Tree>
    </form>


后面代码
private log4net.ILog logger = log4net.LogManager.GetLogger(typeof(AddOrUpdate));
        protected IDepartmentManager manager { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            InitLoad();
        }

        private void InitLoad()
        {
            var items = manager.LoadSubDepartmentsById(null);
            //var partNode = TreeDepartment.Nodes.FirstOrDefault<TreeNode>();
            foreach (var item in items)
            {
                TreeNode node = new TreeNode();
                node.Text = item.DepartmentName;
                node.NodeID = item.ID.ToString();
                node.Leaf = false;
               // DynamicAppendNode(node);
                TreeDepartment.Nodes.Add(node);

            }



        }


        protected void NodeLazyLoad(object sender, TreeNodeEventArgs e)
        {
            DynamicAppendNode(e.Node);
        }
        private void DynamicAppendNode(TreeNode parentNode)
        {
            parentNode.Expanded = true;
            Department department = manager.Load(new Guid(parentNode.NodeID));
            foreach (var item in department.SubDepartments)
            {
                TreeNode node = new TreeNode();
                node.Text = item.DepartmentName;
                node.NodeID = item.ID.ToString();
                node.Leaf = true;
                parentNode.Nodes.Add(node);

            }

        }

延迟加载之前是:
[attach]7092[/attach]
展开之后:
[attach]7095[/attach]

不能折叠,一直是这个样子。

如果一次性的加载是没问题的。把红字去掉注释。运行结果如下:
[attach]7094[/attach]


作者: 隨風往事    时间: 2015-1-19 10:15
你重复加载了。
每次点击先判断是不是已存在子节点?不存在,再加载。存在,直接返回不做任何操作。
作者: liuweisaint    时间: 2015-1-19 10:44
隨風往事 发表于 2015-1-19 10:15
你重复加载了。
每次点击先判断是不是已存在子节点?不存在,再加载。存在,直接返回不做任何操作。 ...

原来是IsPostBack闹的。。。
其他代码我再改进,我就是试试这个例子。晕了!
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                InitLoad();
            }
        }
作者: 隨風往事    时间: 2015-1-19 11:43
不是在Page_Load处判断,是在点击事件判断
作者: liuweisaint    时间: 2015-1-19 16:14
隨風往事 发表于 2015-1-19 11:43
不是在Page_Load处判断,是在点击事件判断

我试了,不用判断。我已经确认是IsPostBack的问题了。官方文档里写了。
http://www.cnblogs.com/sanshi/archive/2012/11/21/2780101.html
最后小结之前的
注:第一次展开“驻马店市”之后,就向其中添加了子节点,所以折叠后再次展开此节点就不会触发节点展开事件了。




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4