DEV Gridcontrol 多选功能实现

DEV Gridcontrol 多选功能实现

1.设置一列 添加一列,FieldName为 "check",将ColumnEdit 设置为 复选框 样式。gridview1。editable设置为true

2.在数据源中加一列"check",

//在表中增加一个列 add(列名,列类型)
db.Columns.Add("check", typeof(bool));
//给每一行的该列赋值
for (int i = 0; i < db.Rows.Count; i++)
{
db.Rows[i]["check"] = "false";
}
注意:新增列的类型为bool类型

3.设置一下两个属性(第二个貌似不设置也可以):
  gridView1 .OptionsSelection.MultiSelect = true;
  gridView1 .OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;

fieldname需要绑定,同时gridcontrol绑定的数据源dataset或者datatable中要有el dname这一列!!否则,也会出现,无法多选的现象

只有在复选框失去焦点后才可以读值的解决方案

 private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            gridView1.SetRowCellValue(e.RowHandle, e.Column,e.Value);
        }

4全选,加一个checkEdit


        private void checkEdit1_CheckedChanged(object sender, EventArgs e)
        {
            string m_className;

            if ((bool)checkEditAll.EditValue == true)
            {
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    gridView1.SetRowCellValue(i, gridView1.Columns["check"], true);
                }
                m_className = "";
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    string name = gridView1.GetDataRow(i)["tooltpid"].ToString();
                   // string name = gridView1.GetRowCellValue(i, gridView1.Columns["tooltpid"]);//       value = gridView1.GetDataRow(i)["check"].ToString();  gridView1.GetRowCellValue(i, gridView1.Columns["tooltpid"]);//
                    if (m_className == "")
                    {
                        m_className += name;
                    }
                    else
                    {
                        m_className += ",";
                        m_className += name;
                    }
                }
                labelControl1.Text = m_className;
            }
            else if ((bool)checkEditAll.EditValue == false)
            {
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    gridView1.SetRowCellValue(i, gridView1.Columns["check"], false);
                }
                m_className = "";
                labelControl1.Text = m_className;
            }
            gridControl1.RefreshDataSource();
 
        }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DevExpress的GridControl中,可以通过以下步骤实现多选后右键弹出小菜单: 1. 在GridControl的设计器中,找到PopupMenu属性,点击其右边的省略号(...)按钮,打开PopupMenu编辑器。 2. 在PopupMenu编辑器中,点击Add按钮,添加一个新的PopupMenu。 3. 在新的PopupMenu中添加一个菜单项(比如"删除"),并设置Click事件处理方法。在该方法中,可以编写删除选中行或单元格的代码。 4. 在GridControl的事件MouseDown中,判断鼠标右键是否按下,如果是,则弹出PopupMenu。在该事件中,可以使用GridControl的GetSelectedRows方法获取选中行的索引,从而实现对选中行或单元格的操作。 以下是示例代码: ``` // 定义PopupMenu和菜单项 private DevExpress.XtraBars.PopupMenu popupMenu1; private DevExpress.XtraBars.BarButtonItem barButtonItem1; // 初始化PopupMenu和菜单项 private void InitPopupMenu() { // 创建PopupMenu popupMenu1 = new DevExpress.XtraBars.PopupMenu(); // 创建菜单项 barButtonItem1 = new DevExpress.XtraBars.BarButtonItem(); barButtonItem1.Caption = "删除"; barButtonItem1.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(barButtonItem1_ItemClick); // 将菜单项添加到PopupMenu中 popupMenu1.AddItem(barButtonItem1); } // 处理菜单项的Click事件 private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { int[] selectedRows = gridView1.GetSelectedRows(); if (selectedRows.Length > 0) { gridView1.DeleteSelectedRows(); } } // 在GridControl的MouseDown事件中显示PopupMenu private void gridControl1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int[] selectedRows = gridView1.GetSelectedRows(); if (selectedRows.Length > 0) { popupMenu1.ShowPopup(gridControl1.PointToScreen(e.Location)); } } } ``` 在以上示例代码中,我们首先定义了一个PopupMenu和一个菜单项,并在InitPopupMenu方法中初始化它们。在barButtonItem1_ItemClick方法中处理菜单项的Click事件,实现对选中行或单元格的删除操作。在gridControl1_MouseDown方法中判断鼠标右键是否按下,并使用GetSelectedRows方法获取选中行的索引,如果选中行不为空,则显示PopupMenu。用户右键单击GridControl后,就可以看到一个删除菜单,点击该菜单后,选中的行或单元格将被删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值