devpress treelist checkbox获取选中行数据、赋值checkbox

该文章介绍了如何在Treelist控件中开启checkbox功能,并在绑定数据源后,通过注册事件来实现对特定条件的数据项赋予checkbox选中状态。当数据匹配时,设置节点的CheckState属性。同时,文章提到了在AfterCheckNode和BeforeCheckNode事件中处理用户交互时的逻辑,以确保节点的勾选状态能正确更新。最后,展示了如何获取选中节点的数据进行后续操作。
摘要由CSDN通过智能技术生成

本文章主要讲述treelist加载数据时给符合条件的checkbox赋值

treelist绑定数据源后注册事件

1、注册事件
treeListNavUP.CustomDrawNodeCell += new CustomDrawNodeCellEventHandler(treeListNavUP_CustomDrawNodeCell);

2、checklist赋值
List<string> checkList = new List<string>();
DataTable dtx = new InitData().GetRoleNavData(" and SUBJECTINSTANCEID='" + _ID + "'");
     if (dtx != null && dtx.Rows.Count > 0)
     {
                foreach (DataRow item in dtx.Rows)
                {
                    checkList.Add(item["OBJECTINSTANCEID"].ToString());
                }
     }
              
//此事件会处理checkbox状态 但是会出现绑定勾选状态后,再次点击不会改变checked状态 所以还要注册两个事件
private void treeListNavUP_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
        {    //TreeListNode node = sender as TreeListNode;
           //checkList 为符合条件的数据
            foreach (var item in checkList)
            {
                if (e.Node.GetValue("ID").ToString() == item)
                {
                    e.Node.CheckState = CheckState.Checked;
                    e.Node.ParentNode.CheckState = CheckState.Indeterminate;
                    e.Node.ParentNode.ParentNode.CheckState = CheckState.Indeterminate;
                    SyncNodeCheckState_Parent(e.Node, CheckState.Checked);
                }
            }
            if (e.Node.CheckState == CheckState.Checked || e.Node.CheckState == CheckState.Indeterminate)
            {
                e.Appearance.BackColor = Color.LightBlue;
            }
        }
private void treeListNavUP_AfterCheckNode(object sender, NodeEventArgs e)
        {
			//点击节点后注销 treeListNavUP_CustomDrawNodeCell事件
            treeListNavUP.CustomDrawNodeCell -= new CustomDrawNodeCellEventHandler(treeListNavUP_CustomDrawNodeCell);
            //e.Node.CheckState = CheckState.Unchecked;
            //SetCheckedChildNodes(e.Node, e.Node.CheckState);
            //SyncNodeCheckState_Parent(e.Node, e.Node.CheckState);
        }

        private void treeListNavUP_BeforeCheckNode(object sender, CheckNodeEventArgs e)
        {
          //点击节点前注销 treeListNavUP_CustomDrawNodeCell事件
            //e.State = (e.PrevState == CheckState.Checked ? CheckState.Unchecked : CheckState.Checked);
            treeListNavUP.CustomDrawNodeCell -= new CustomDrawNodeCellEventHandler(treeListNavUP_CustomDrawNodeCell);
        }
//然后就可以勾选/不勾选节点
  • 获取选中的节点数据
  List<TreeListNode> listNodes = treeListNavUP.GetAllCheckedNodes();
  foreach (TreeListNode item in listNodes)
  {
   //可以根据选中节点的值 进行操作 
   if (item.GetValue("RIBBON_TYPE").ToString() == "SystemGroupPage") {
       //todo
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢小亦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值