日期:2014-05-18  浏览次数:20807 次

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

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

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



------解决方案--------------------
先在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();
}
}
------解决方案--------------------
1.afterSelect可以实现,不过你得处理很多其他细节问题,到时候你就知道了,

2.加上一个假的子节点,名字叫“等待加载子节点...”,
------解决方案--------------------
处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。
------解决方案--------------------
在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量