在winform的数据视图字段中添加按钮

本文关键字:添加 按钮 字段 视图 winform 数据 | 更新日期: 2023-09-27 17:50:34

我使用Dexexpress xtragrid列,并显示了我的数据库的所有行。

我想在datagridview中添加一个新列,为此我做了以下操作:

Dim AddOperationsColumn As New GridColumn()
AddOperationsColumn.Name = "colOperations"
AddOperationsColumn.FieldName = "Operations"
AddOperationsColumn.Caption = "Operations"
Grid_view_patients.Columns.Insert(1, AddOperationsColumn)
AddOperationsColumn.Visible = True
AddOperationsColumn.VisibleIndex = TotalColumns + 1

现在我想添加两个按钮到它 EditDelete

问题:那么如何在这些字段中添加按钮呢?

我已经数过所有的行了

在winform的数据视图字段中添加按钮

方案1

使用数据导航器非常简单。只要将网格属性useembedbednavigator设置为true,它就会显示在网格的底部。

为了给按下的按钮提供自己的功能,你需要处理NavigatorBase。ButtonClick事件例如:

private void gridControl_EmbeddedNavigator_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
    {
        if (e.Button.ButtonType == NavigatorButtonType.Remove)
        {
            //getting the selected object
            myObject selectedItem = dbGridView.GetRow(dbGridView.FocusedRowHandle) as myObejct;
            if (selectedItem == null) return;
            //now do something with that object
            .......
            e.Handled = true;
        }
    }

请注意,上面的代码覆盖了DataNavigator的默认行为

解决方案2

另一种方法是就地编辑网格行。为此,您的数据源需要是BindingList。你可以看到DevExpress WinForms项目的模板

使用存储库项

    RepositoryItemButtonEdit editButton;
    RepositoryItemButtonEdit deleteButton;
    private void InitRepositoryItems()
    {
        editButton = new RepositoryItemButtonEdit();
        deleteButton = new RepositoryItemButtonEdit();

        editButton.ButtonClick += editButton_ButtonClick;
        deleteButton.ButtonClick += deleteButton_ButtonClick;
        gridControl.RepositoryItems.Add(editButton);
        gridControl.RepositoryItems.Add(deleteButton);
    }
    void deleteButton_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
    {
        // do some delete on button click
    }
    void editButton_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
    {
       //do some edit on button click
    } 
    private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
    {
        if (e.Column.Name == "colOperations")
            e.RepositoryItem = editButton;
    }

gridView1_CustomRowCellEdit用于分配对应列中的RepositoryItem(在我们的例子中是colOperations列)