.net之旅-CheckBox树型结构功能选择(43)
2007-01-27 14:00
330 查看
CheckBox树型结构功能选择是权限管理经常用到的一个功能。 对CheckBox的选择控制以前的方法有JavaScript。本文的方法为asp.net下的编程实现。
流程:
1 节点状态发生变化
2 设置其下节点的变化
3 设置其节点父节点的变化。这个只需要设置该节点选中的情况。如果没有选中当该节点没有兄弟节点时有部分关系,需要去除父节点的选中状态。但是这个对程序没什么大的影响。所以没有写。
节点复选框发生变化触发如下事件:
protected void TreeViewFuncList_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
// 修改所选节点的 同时选择其子节点状态
SetChildChecked(e.Node);
}
/// <summary>
/// 当节点被选中 同时选择其父节点被选中 没选中则不改变
/// </summary>
/// <param name="p_Node"></param>
private void SetChildChecked(TreeNode p_Node)
{
// 当节点被选中 同时选择其父节点被选中 没选中则不改变
if (p_Node.Checked)
{
SetParentChecked(p_Node);
}
foreach (TreeNode _n in p_Node.ChildNodes)
{
_n.Checked = p_Node.Checked;
// 递归调用
if (_n.ChildNodes.Count > 0)
{
SetChildChecked(_n);
}
}
}
/// <summary>
/// 选择此节点位置前的父节点为选中状态 直到根节点位置
/// </summary>
/// <param name="p_Node">树节点</param>
private void SetParentChecked(TreeNode p_Node)
{
/** 节点所在位置的深度 */
int i = p_Node.Depth;
/** 临时节点 用来进行交换保存临时变量 */
TreeNode tempNode;
/** 选择此节点位置前的父节点为选中状态 直到根节点位置 */
while (i>0)
{
tempNode = p_Node;
tempNode.Parent.Checked = tempNode.Checked;
p_Node = tempNode.Parent;
// 节点深度减1
i--;
}
}
通过上面的函数,我们可以完成CheckBox的选择了。如果要引用其值可以通过获取Value得到。
设置节点的Value:Node.Value = Row["FunctionId"].ToString();
获取值:TreeViewFuncList.SelectedNode.Value;
测试通过
流程:
1 节点状态发生变化
2 设置其下节点的变化
3 设置其节点父节点的变化。这个只需要设置该节点选中的情况。如果没有选中当该节点没有兄弟节点时有部分关系,需要去除父节点的选中状态。但是这个对程序没什么大的影响。所以没有写。
节点复选框发生变化触发如下事件:
protected void TreeViewFuncList_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
// 修改所选节点的 同时选择其子节点状态
SetChildChecked(e.Node);
}
/// <summary>
/// 当节点被选中 同时选择其父节点被选中 没选中则不改变
/// </summary>
/// <param name="p_Node"></param>
private void SetChildChecked(TreeNode p_Node)
{
// 当节点被选中 同时选择其父节点被选中 没选中则不改变
if (p_Node.Checked)
{
SetParentChecked(p_Node);
}
foreach (TreeNode _n in p_Node.ChildNodes)
{
_n.Checked = p_Node.Checked;
// 递归调用
if (_n.ChildNodes.Count > 0)
{
SetChildChecked(_n);
}
}
}
/// <summary>
/// 选择此节点位置前的父节点为选中状态 直到根节点位置
/// </summary>
/// <param name="p_Node">树节点</param>
private void SetParentChecked(TreeNode p_Node)
{
/** 节点所在位置的深度 */
int i = p_Node.Depth;
/** 临时节点 用来进行交换保存临时变量 */
TreeNode tempNode;
/** 选择此节点位置前的父节点为选中状态 直到根节点位置 */
while (i>0)
{
tempNode = p_Node;
tempNode.Parent.Checked = tempNode.Checked;
p_Node = tempNode.Parent;
// 节点深度减1
i--;
}
}
通过上面的函数,我们可以完成CheckBox的选择了。如果要引用其值可以通过获取Value得到。
设置节点的Value:Node.Value = Row["FunctionId"].ToString();
获取值:TreeViewFuncList.SelectedNode.Value;
测试通过
相关文章推荐
- .net之旅-树型结构及相关功能的实现(41)
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- 功能清单转成树型结构
- [原创]通过点击节点或选择节点前checkbox实现树节点单选功能!
- js用于树型结构级联选择
- JavaScript Tree 功能强大,包含checkbox,自动选择子节点和父节点.
- JAVA-练习MyShopping实现商品换购 综合运用嵌套if选择结构 switch选择结构 多重if选择 结构实现商品换购功能
- checkbox 全选/反选功能的 jquery插件(支持多页保持选择)
- (转)类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- .NET 指南:类与结构之间的选择
- OpenJWeb1.6 快速开发平台树型结构功能生成器
- 类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- 利用树型结构进行排序 选择自 0210 的 Blog
- C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件
- layui表格checkbox选择全选样式及功能
- 用选择结构实现购物管理系统的部分功能
- jQuery 实现 Checkbox 的全选、全不选和反向选择的功能
- Echarts树图结构中图例的选择显示功能实现
- js用于树型结构级联选择 支持三态级联选择