您的足迹:首页 > DevExpress控件 >DevExpress控件-GridControl控件中添加一列复选框并进行相关操作

DevExpress控件-GridControl控件中添加一列复选框并进行相关操作

GridControl 控件中自带有复选框,而不需要自己另外加一列CheckBox。

但是操作这个复选框确实相当的蛋疼,它没有相关的事件处理,我到官网去查了下,官网采用的是重新写一个控件的所有操作方法。

需要去官网的:传送门


个人认为过于麻烦,重新写了一个简单的方法来操作,具体操作如下:


1.设置GridControl 控件里面的子控件GridView中OptionSelection属性,如图1:

MultiSelect设置为true

MultiSelectMode设置为CheckBoxRowSelect

QQ截图20160310115735.png

图1


2.点击事件操作的方法,代码如下:

   private void gridCtrlContrDealSum_MouseUp(object sender, MouseEventArgs e)
        {
            try
            {
                //获取鼠标操作的行
                DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = gridViewContrDealSum.CalcHitInfo(new Point(e.X, e.Y));

                if (hi.RowHandle < 0 && hi.Column == null)
                {
                    return;
                }

                //标题行中复选框默认名字是Selection
                if (hi.Column.Caption == "Selection")
                {
                    //选择的行
                    int[] selectedRow = gridViewContrDealSum.GetSelectedRows();
                    //点击全选,或取消全选
                    if (hi.RowHandle < 0)
                    {
                        int count = gridViewContrDealSum.RowCount;
                        if (selectedRow.Length == count)
                        {
                            //取消全选
                            gridCtrlDealList.DataSource = null;
                        }
                        else
                        {
                            //全选
                            contractCodes = new List<string>();
                            SetClickGrid(this.controller.GetRecordList());
                        }
                    }
                    else
                    {
                        //选择行的数量小于1
                        if (selectedRow.Length < 1)
                        {
                            gridCtrlDealList.DataSource = null;
                            return;
                        }

                        contractCodes = new List<string>();
                        //contractCodes这边是用一个List来存储被选中行gcc_Contract_Code的值
                        for (int i = 0; i < selectedRow.Length; i++)
                        {
                            string value = gridViewContrDealSum.GetRowCellValue(selectedRow[i], gcc_Contract_Code).ToString();
                            contractCodes.Add(value);
                        }
                        //重新绑定数据
                        SetClickGrid(this.controller.GetRecordList());
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.Error(ex.Message);
            }
        }

至于为什么要用MouseUp这个事件,大家可以自行尝试下其他方法。


3.怎么设置默认全选还是取消全选,在开始绑定完数据的时候,加上下面代码:

      for (int i = 0; i < gridViewContrDealSum.RowCount; i++)
                    {
                        gridViewContrDealSum.SelectRow(i);
                    }

好的,方法介绍完毕,发个样子图给大家看看,图2。

QQ截图20160310141003.png

图2

本博客所有文章如无特别注明均为原创。作者:cc复制或转载请以超链接形式注明转自 我的博客
原文地址《DevExpress控件-GridControl控件中添加一列复选框并进行相关操作

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)