[DevExpress]禁用TreeListNode CheckBox

在实际开发中,需要根据条件来设置节点不可勾选,查看DevExpress文档发现通过其CustomDrawNodeCheckBox和BeforeCheckNode事件组合使用可以达到,一般设置节点不可以勾选的规则是一样的,所以对代码进行稍微封装。

关键代码:

        /// <summary>
        /// 禁用CheckBox
        /// 说明
        /// 在CustomDrawNodeCheckBox事件中使用
        /// </summary>
        /// <param name="tree">TreeList</param>
        /// <param name="conditionHanlder">委托</param>
        /// <param name="e">CustomDrawNodeCheckBoxEventArgs</param>
        public static void DisabledCheckBox(this TreeListNode tree, Predicate<TreeListNode> conditionHanlder, CustomDrawNodeCheckBoxEventArgs e)
        {
            if (conditionHanlder(e.Node))
            {
                e.ObjectArgs.State = ObjectState.Disabled;
            }
        }
        /// <summary>
        /// 禁止操作节点CheckBox
        /// 说明
        /// 在BeforeCheckNode事件中使用
        /// </summary>
        /// <param name="tree">TreeListNode</param>
        /// <param name="conditionHanlder">委托</param>
        /// <param name="e">CheckNodeEventArgs</param>
        public static void DisabledSetCheckBox(this TreeListNode tree, Predicate<TreeListNode> conditionHanlder, CheckNodeEventArgs e)
        {
            if (conditionHanlder(e.Node))
            {
                e.CanCheck = false;
            }
        }

使用示例:

        /// <summary>
        /// CustomDrawNodeCheckBox事件
        /// </summary>
        void LHTree_CustomDrawNodeCheckBox(object sender, CustomDrawNodeCheckBoxEventArgs e)
        {
            e.Node.DisabledCheckBox(DisableNodeCheckBoxRule, e);
        }
        /// <summary>
        /// BeforeCheckNode事件
        /// </summary>
        void LHTree_BeforeCheckNode(object sender, CheckNodeEventArgs e)
        {
            e.Node.DisabledSetCheckBox(DisableNodeCheckBoxRule, e);
        }
        /// <summary>
        /// Disable TreeListNode规则
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private bool DisableNodeCheckBoxRule(TreeListNode node)
        {
            bool _disable = false;
            if (OpLampCfgList.Count > 0)
            {
                string _cabId = OpLampCfgList[0].CabID;
                NodeType _curType = node.GetNodeType();
                if (_curType == NodeType.Lamp)//当节点是灯类型且父节点KEYID等于_cabId时候,屏蔽Checkbox
                {
                    _disable = node.ParentNode.ParentNode.GetKeyID().Equals(_cabId);
                }
                if (_curType == NodeType.Pole)//当节点是杆类型且父节点KEYID等于_cabId时候,屏蔽Checkbox
                {
                    _disable = node.ParentNode.GetKeyID().Equals(_cabId);
                }
                if (_curType == NodeType.Cab && node.GetKeyID().Equals(_cabId))//当节点是箱类型KEYID等于_cabId时候,屏蔽Checkbox
                {
                    _disable = true;
                }
                if (_curType == NodeType.Area || _curType == NodeType.CabsGroupRoot)//当节点类型等于地域或者根节点时候,屏蔽Checkbox
                {
                    _disable = true;
                }
            }
            return _disable;
        }

代码效果:


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

希望有所帮助!

[DevExpress]禁用TreeListNode CheckBox

时间: 2024-08-13 20:22:33

[DevExpress]禁用TreeListNode CheckBox的相关文章

[WinForm][DevExpress]设置TreeListNode的背景色

关键代码: /// <summary> /// 设置节点背景色 /// 在NodeCellStyle事件中使用 /// </summary> /// <param name="tree">TreeList</param> /// <param name="e">GetCustomNodeCellStyleEventArgs</param> /// <param name="bui

DevExpress Grid使用checkBox选中的方法

到官网得到消息自13.2版本后的Dev Grid中均内置了CheckBox列多选功能.在寻找答案的过程的成果进行记录. 一.13.2版本以后用法 启用多选列对Gird中的View进行以下属性设置: gridView1.OptionsSelection.MultiSelect = true; gridView1.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect; 清除当前选择在选中列时后,可配置在选中列

[DevExpress]TreeListLookUpEdit带checkbox之经典运用

上代码: public partial class TreeListLookUpEdit : DevExpress.XtraEditors.XtraForm { private string _KeyName; public string KeyName { get { return lblKeyName.Text; } set { lblKeyName.Text = value; } } private string _KeyID; public string KeyID { get { re

Devexpress GridView增加CheckBox列

参考DEV官网代码做了一个增加checkbox列效果: #region 方法:设置GridView数据绑定        public void GridDataBind()        {            dt = dbHelper.Fill(cmdStr);                     // 填充DataTable            dt.Columns.Add("Check", typeof(bool));  // 增加个CheckBox列        

JQuery实现radio、select、checkbox禁用

<script>$(document).ready(function(){ <!-- radio的禁用 --> var input = $("#appDIV").find("input:radio");   input.attr("disabled","disabled");   input.each(function(){     if($(this).val()==2){        $(this

转:zTree树控件入门之checkbox:如何动态设置节点的checkbox选择框启用与禁用状态(chkDisabled)

当一棵树的部分节点根据登入用户角色不同而决定是否启用节点前的checkbox选择框的时候,我们应该如何做呢?也或者如何在页面加载的时候动态根据当前登入用户角色动态切换节点前的checkbox的禁用状态? 针对上列一系列问题,今天这里将做一个统一的讲解: 关于节点前的checkbox选择框是否禁用,是通过属性chkDisabled来决定的,值为true则表示禁用:反之表示启用: 一.初始化设置节点禁用 示例代码如下所示: var zNodes =[ { id:1, pId:0, name:"随意勾

DevExpress.XtraTreeList

1. DevExpress.XtraTreeList控件         将其简称为tree,tree其实就是一个树表控件,他像树一样包含具有父子关系的若干节点,同时每个节点又是一个带有多个字段的记录.其用法非常简单方便,只需要为其配置带有父子关系的数据源,其就可以按照树的形式进行显示. 1.1 DevExpress.XtraTreeList配置数据源    数据源一般是一个二维表,可以是数据库中的表,该表中要包含表示父子关系的两个字段,即主键和父亲的主键.下面的代码是手动创建的数据源DataT

DevExpress

1. DevExpress.XtraTreeList控件         将其简称为tree,tree其实就是一个树表控件,他像树一样包含具有父子关系的若干节点,同时每个节点又是一个带有多个字段的记录.其用法非常简单方便,只需要为其配置带有父子关系的数据源,其就可以按照树的形式进行显示. 1.1 DevExpress.XtraTreeList配置数据源    数据源一般是一个二维表,可以是数据库中的表,该表中要包含表示父子关系的两个字段,即主键和父亲的主键.下面的代码是手动创建的数据源DataT

Jquery 操作Html 控件 CheckBox、Radio、Select 控件

在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio.select,用 Jquery 库操作其他会方便很多,下面用Jq对这些控件的操作进行一个全面的代码总结. 一.Jquery 对 CheckBox 的操作: <input id="ckb1" name="ckb" checked="checked" value="0" type="checkbox&q