c# treeView 只载入第一层,点击节点时载入下一层

时间:2020-12-26 12:41:05

由于载入到TREEVIEW的数据量过大,载入耗时很长,想实现载入时只载入第一层,再点击节点时再从数据库载入选中节点的子节点的内容的效果,这样更好。

问题: 1.实现这样的功能是要用到afterSelect事件吗?
      2.如果打开某个节点下还有子节点,如何做到不载入子节点却在这个节点的左边显示+号 ?

6 个解决方案

#1


先在TreeView中加入父节点,在后添加控件的NodeMouseClick事件,在事件中写上加载子节点的代码,如果有多和父节点的话:
 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Text == "父节点")
            {
                e.Node.Nodes.Add("1");
                e.Node.Nodes.Add("2");
                e.Node.Nodes.Add("3");
                e.Node.Nodes.Add("4");
                e.Node.Nodes.Add("5");
                e.Node.Expand();
            }
        }

#2


1.afterSelect可以实现,不过你得处理很多其他细节问题,到时候你就知道了,

2.加上一个假的子节点,名字叫“等待加载子节点...”,

#3


建议多加载一级,否则表示“本文件夹有子文件夹”的加号就没法实现。

#4


处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。

#5


在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量

#6


该回复于2011-12-15 16:53:46被版主删除

#1


先在TreeView中加入父节点,在后添加控件的NodeMouseClick事件,在事件中写上加载子节点的代码,如果有多和父节点的话:
 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Text == "父节点")
            {
                e.Node.Nodes.Add("1");
                e.Node.Nodes.Add("2");
                e.Node.Nodes.Add("3");
                e.Node.Nodes.Add("4");
                e.Node.Nodes.Add("5");
                e.Node.Expand();
            }
        }

#2


1.afterSelect可以实现,不过你得处理很多其他细节问题,到时候你就知道了,

2.加上一个假的子节点,名字叫“等待加载子节点...”,

#3


建议多加载一级,否则表示“本文件夹有子文件夹”的加号就没法实现。

#4


处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。

#5


在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量

#6


该回复于2011-12-15 16:53:46被版主删除