欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DevExpress实现TreeList父子节点CheckState状态同步的方法

程序员文章站 2023-12-18 11:16:10
本文实例展示了devexpress实现treelist父子节点checkstate状态同步的方法,在项目开发中有一定的应用价值,具体实现方法如下: 主要功能代码如下:...

本文实例展示了devexpress实现treelist父子节点checkstate状态同步的方法,在项目开发中有一定的应用价值,具体实现方法如下:

主要功能代码如下:

/// <summary>
///同步父子节点勾选状态
///说明
///在afterchecknode事件中使用代码
///eg:e.node.syncnodecheckstate(e.node.checkstate);
/// </summary>
/// <param name="node">需要同步的节点</param>
/// <param name="check">节点当前勾选状态</param>
public static void syncnodecheckstate(this treelistnode node, checkstate check) { syncnodecheckstate_child(node, check); syncnodecheckstate_parent(node, check); }

private static void syncnodecheckstate_child(treelistnode node, checkstate check)
{
  if (node != null)
  {
 node.downrecursivenode(n => n.checkstate = check);
  }
}
private static void syncnodecheckstate_parent(treelistnode node, checkstate check)
{
  if (node.parentnode != null)
  {
 bool _cked = false;
 checkstate _ckstate;
 foreach (treelistnode cn in node.parentnode.nodes)
 {
   _ckstate = cn.checkstate;
   if (check != _ckstate)
   {
 _cked = !_cked;
 break;
   }
 }
 node.parentnode.checkstate = _cked ? checkstate.indeterminate : check;
 syncnodecheckstate_parent(node.parentnode, check);
  }
}
/// <summary>
/// 向下递归treelistnode节点
/// </summary>
/// <param name="node">需要向下递归的节点</param>
/// <param name="conditionhanlder">委托</param>
public static void downrecursivenode(this treelistnode node, action<treelistnode> conditionhanlder)
{
  foreach (treelistnode _childnode in node.nodes)
  {
 conditionhanlder(_childnode);
 downrecursivenode(_childnode, conditionhanlder);
  }
}

代码运行效果如下图所示:

DevExpress实现TreeList父子节点CheckState状态同步的方法

上一篇:

下一篇: