gridcontrol中单元格属性设置为RepositoryItemCheckEdit

默认情况下,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;

            }
		}
发布了44 篇原创文章 · 获赞 4 · 访问量 7960

猜你喜欢

转载自blog.csdn.net/fangyu723/article/details/104921102
今日推荐