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();
即可实现。
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();
即可实现。
相关文章推荐
- ButterKnife 加载控件 + xUtils 获取数据+ Fresco 显示图片 + 通过事件分发控制移动 + 通过AIDL获取数据
- ButterKnife 加载控件 + xUtils 获取数据+ Fresco 显示图片 + 通过事件分发控制移动 + 通过AIDL获取数据
- GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行、列数据的途径。
- treeview多数据加载+展开关闭控制
- TreeView 控件树节点 TreeNode 的异步加载及对节点 CHECKBOX 的多选控制
- js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
- js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的
- [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件
- [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件
- TreeView 控件树节点 TreeNode 的异步加载及对节点 CHECKBOX 的多选控制
- js/jq控制页面动态加载数据,滑动滚动条自动加载事件
- 在事件中引用aspx页面repeater控件所包含控件的数据
- TreeView的图标个性化和动态数据加载
- treeview加载数据以及gridview双击时加载treeview是否选中,留个脚印
- Gridpanel数据加载成功后,触发事件,让表格第一行的数据显示在下面的formpanel
- ExtJS中表格控件的使用,属性设置和数据的获取加载
- 一种加载TreeView数据的新写法
- RecyclerView基础-数据适配、自定义分割线、上拉加载、下拉加载、item点击事件
- 工业控制,实时监控,远程管理,数据采集,控件,VC++源代码组件库解决方案