您的位置:首页 > 其它

treeview控件的Expand事件下加载数据的控制

2013-07-09 10:17 399 查看
1、使用事件tvHeLiuDM_BeforeExpand(object sender, TreeViewCancelEventArgs e)在展开节点时发生

2、使用事件tvHeLiuDM_AfterCollapse(object sender, TreeViewEventArgs e)在折叠节点时发生

3、如标题,想要在节点Expand发生时才加载下级节点的数据控制需要在beforeExpand事件(支持点击图片展开和双击节点展开)中添加想要的逻辑:

示例代码如下:

void tvHeLiuDM_BeforeExpand(object sender, TreeViewCancelEventArgs e)

{

if (e.Action == TreeViewAction.Unknown)

return;

if (e.Node == null || e.Node.Tag == null || !e.Node.Tag.ToString().Equals(要加载节点的tag标志))

return;

if (e.Node.Nodes.Count == 1)//如果当前节点有且仅有一个,且为默认节点时清除该节点,否则无需重新加载数据

{

if (e.Node.Nodes[0].Text.Trim().Equals(DEFAULTNODENAME))

e.Node.Nodes.Clear();

else

return;

}

if (e.Node.Nodes.Count > 1) //如果当前节点下已经加载过数据,无需重新加载数据

return;

AddChildrenToParentNode(e.Node);//加载节点的数据

}

void tvHeLiuDM_AfterCollapse(object sender, TreeViewEventArgs e)

{

if (e.Action == TreeViewAction.Unknown)

return;

if (e.Node == null && e.Node.Tag == null || !e.Node.Tag.ToString().Equals(HELIUTAG))

return;

if (e.Node.Nodes.Count == 0)

e.Node.Nodes.Add(DEFAULTNODENAME);//折叠时添加默认节点,提示用户节点可以展开

}

4、这里需要注意的,我们的目标是不想再开始就加载数据,所以在初始控制节点展开的时候需要注意:

如:

我们默认需要展开的是根节点下的第一级节点,所以我们会用到rootNode.Expand();这个方法(展开当前节点的下一级节点),

但是我们观察发现,第一级节点下的数据也被加载了(即展开根节点时,第一级节点也调用了Expand()方法),因为默认如果第一级

节点是不折叠的。所以,我们需要:

firstNode.Collapse();

rootNode.Nodes.Add(firstNode);

rootNode.Expand();

即可实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐