在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
现在我想添加两个按钮到它 Edit
和Delete
问题:那么如何在这些字段中添加按钮呢?
我已经数过所有的行了
方案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列)