由于载入到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();
}
}
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.加上一个假的子节点,名字叫“等待加载子节点...”,
2.加上一个假的子节点,名字叫“等待加载子节点...”,
#3
建议多加载一级,否则表示“本文件夹有子文件夹”的加号就没法实现。
#4
处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。
#5
在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量
#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();
}
}
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.加上一个假的子节点,名字叫“等待加载子节点...”,
2.加上一个假的子节点,名字叫“等待加载子节点...”,
#3
建议多加载一级,否则表示“本文件夹有子文件夹”的加号就没法实现。
#4
处理第一层节点的afterSelect事件,然后递归绑定节点及节点的afterSelect事件。
#5
在TreeView的BeforeExpand事件中获取当前要展开的节点.加载当前节点下的子节点和子节点的一级节点.只能这样了.如果设置假节点的话,你又不确定哪一个改有假节点.这样是只加载当前节点下的二级节点,一定程度上减少了数据量