[DevExpress]gridcontrol中单元格属性设置为RepositoryItemCheckEdit

本文介绍了在DevExpress的GridControl中,如何将单元格属性设置为RepositoryItemCheckEdit,以及如何处理空值显示、单选和多选行为。在设置NullStyle属性为Unchecked后,空值单元格将显示为白色状态。当RepositoryItemCheckEdit所在的列未绑定数据源时,列默认单选;绑定数据源后则支持多选。在C#环境中,可以通过绑定FieldName数据源和处理行状态来实现特定的单选逻辑,并提供了全选、反选及获取勾选记录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下,RepositoryItemCheckEdit的空值,会显示为灰色半选中状态,要想改为白色空状态,需要修改NullStyle属性为Unchecked。
如果RepositoryItemCheckEdit所在的列未绑定数据源,那么该列默认只可以单选;如果绑定了数据源,那么可以同时多选。
ColumEdit关联FieldName数据源,但是在设计功能中并不仅仅这样就可以同时多选
窗体初始化时:

this.repositoryItemCheckEdit1.QueryCheckStateByValue += new DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventHandler(this.repositoryItemCheckEdit1_QueryCheckStateByValue);
gridView1.OptionsSelection.MultiSelect = true;

实现注册事件:

        private void repositoryItemCheckEdit1_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
        {
            string val = "";
            if (e.Value != null)
            {
                val = e.Value.ToString();
            }
            else
            {
                val = "False";//默认为不选   
            }
            switch (val)
            {
                case "True":
                case "Yes":
                case "1":
                    e.CheckState = CheckState.Checked;
                    break;
                case "False":
                case "No":
                case "0":
                    e.CheckState = CheckState.Unchecked;
                    break;
                default:
                    e.CheckState = CheckState.Unchecked;
                    break;
            }
            e.Handled = true;
 
        }

在绑定数据源的情况下实现只可以单选,可以通过循环每行的状态来实现

	/// <summary>
        /// 选择状态改变触发事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
	 private void repositoryItemCheckEdit1_CheckedChanged(object sender, EventArgs e)
          {
            DataTable dt = gridControl1.DataSource as DataTable;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["Select"] = false;
            }
            gridControl1.RefreshDataSource();
 
          }

绑定数据源后的全选和反选

         //全选
        private void btnSelectAll_Click(object sender, EventArgs e)
        {
            DataTable dt = gridControl1.DataSource as DataTable;
 
            foreach (DataRow dr in dt.Rows)
            {
                dr["Select"] = "True";
            }
        }
	//反选
        private void btnInvertSelect_Click(object sender, EventArgs e)
        {
            DataTable dt = gridControl1.DataSource as DataTable;
            foreach (DataRow dr in dt.Rows)
            {
                string str = dr["Select"].ToString();
                if (str == "True")
                    dr["Select"] = "False";
                else
                    dr["Select"] = "True";
            }
        }

获取勾选记录:

	private void GetRecord(object sender, EventArgs e)
        {
            List<string> delList = new List<string>();
            if (gridView1.FocusedRowHandle >= 0)
            {
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    string obj = gridView1.GetRowCellValue(i, "Select").ToString();
                    if (obj.Equals("True"))
                    {
                        string id = this.gridView1.GetRowCellValue(i, "i_id").ToString();
                        delList.Add(id);
                    }
                }
 
                if (delList.Count > 0)
                {
                    DialogResult result = MessageBox.Show("确定删除记录?", "删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        string strDel = string.Join(",", delList);
                        pADOHelper.ExecuteNonQuery(string.Format("DELETE from {0} where i_id in ({1})", CommonClass.tableConfigMapLayers, strDel));
                        RefreshMapLayers();
                    }
                }
                else
                    MessageBox.Show("请勾选数据"); return;
 
            }
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值