Add and Remove Rows 添加和删除行

Goto Data Grid 数据网格

Add and Remove Rows 添加和删除行

Common Requirements 通用要求

数据网格使用分配给 GridControl.DataSource 属性的数据源的方法来添加和删除行。数据源必须是可编辑的(非只读)。实现 IBindingList 接口的数据源必须启用 AllowNew 和 AllowRemove 设置。

New Item Row 新建项行

New Item Row 允许用户添加新行。使用 GridOptionsView.NewItemRowPosition 属性在数据网格中显示 New Item 行:

gridView1.OptionsView.NewItemRowPosition = NewItemRowPosition.Top;

在这里插入图片描述
当用户开始在 New Item 行中编辑时,数据网格将初始化一个新的行对象并引发 ColumnView.InitNewRow 事件,该事件允许您使用默认值初始化新行。

在以下情况下,数据网格会向数据源添加新的行对象:

  • New Item Row 失去焦点。
  • 用户将焦点移动到 New Item 行中的最后一个单元格,然后按 Enter 键。
  • 用户单击 Data Navigator 中的 End Edit 按钮。
  • 调用 UpdateCurrentRow 方法。

Add Rows in Code 在代码中添加行

添加新行方法

AddNewRow() 方法在 View 中创建一个新的(空白)行,并引发 InitNewRow 事件,该事件允许您使用默认值初始化新行。

gridView1.AddNewRow();

如果 View 显示 New Item Row,则 AddNewRow 方法将焦点移动到 New Item Row。否则,新行将暂时显示在现有数据行下方。

Initialize a New Row 初始化新行

处理 InitNewRow 事件以使用默认值初始化 New Item Row 中的单元格。使用 SetRowCellValue 方法指定单元格值。

在以下情况下,View 会引发 ColumnView.InitNewRow 事件:

  • 用户开始编辑 New Item 行中的单元格。
  • 调用 AddNewRow() 方法。

以下示例添加一个新行,使用默认值初始化新行,并将新行保存到网格的数据源:

gridView1.SetRowCellValue(e.RowHandle, "charge_total","100");

Validate a New Row 验证新行

处理 ColumnView.ValidateRow 事件,以便在将行添加到网格的数据源之前验证新行中的单元格值。

Add Rows using Data Source API 使用数据源 API 添加行

下面的代码将一条新(空白)记录添加到 BindingList,该记录用作数据网格的数据源:

void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
      (gridControl1.DataSource as BindingList<SalesPerson>).AddNew();
}

如果数据源实现此类 API,则可以使用数据源 API 添加/删除行。

如果数据源未实现 IBindingList 接口,则不会向数据网格发送添加/删除通知。在这种情况下,请使用以下方法之一更新/刷新数据网格:

  • GridControl.RefreshDataSource - 更新主视图。
  • View.RefreshData - 更新特定视图。

Delete Rows 删除行

Delete a Row 删除行

使用 DeleteRow(Int32) 方法删除指定的数据行。数据源必须允许删除操作。

  • 在主从网格中,DeleteRow 方法将主行及其子行一起删除。
  • DeleteRow 方法用于删除组行和组中的所有数据行。

DeleteRow(Int32) 方法调用会触发 ColumnView.RowDeleting 事件。成功的删除操作将引发 ColumnView.RowDeleted 事件。

以下代码在用户按下 Ctrl + Del 键盘快捷键时删除焦点行:

private void gridView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
  if (e.KeyCode == Keys.Delete && e.Modifiers == Keys.Control) {
      if (MessageBox.Show("Delete row?", "Confirmation", MessageBoxButtons.YesNo) != 
      DialogResult.Yes)
        return;
    GridView view = sender as GridView;                
    view.DeleteRow(view.FocusedRowHandle);
    }
}

Delete Selected Rows 删除所选行

使用 DeleteSelectedRows() 方法删除所选行(如果启用了多单元格选择模式,则删除具有所选单元格的行)。

DeleteSelectedRows() 方法调用会触发要删除的每一行的 ColumnView.RowDeleting 事件。每个成功的删除操作都会引发 ColumnView.RowDeleted 事件。

Data Navigators 数据导航器

Data Grid 集成了 Data Navigator,允许用户导航和编辑数据。启用 GridControl.UseEmbeddedNavigator 选项以显示 Data Navigator。

/*
 * Data Navigators 数据导航器
  */
 gridControl1.UseEmbeddedNavigator = true;
 ControlNavigator navigator = new ControlNavigator();
 navigator.Location = new Point(0, 0);
 navigator.NavigatableControl = gridControl1;
 Controls.Add(navigator);

Post User Edits to the Database 将用户编辑发布到数据库

与其他 DevExpress 数据感知控件(例如,Gantt Control、Vertical Grid、TreeList)一样,数据网格不直接与数据库交互。数据网格使用连接到数据库的数据源进行操作。数据网格将用户对数据源的编辑保存到数据源,但您需要手动将这些更改发布到数据库。

处理 ColumnView.RowUpdated 事件以将修改后的行值发布到数据库。在以下情况下触发该事件:

  • 用户离开已编辑的行(例如,用户将焦点移至另一行)。
  • 调用 UpdateCurrentRow() 方法。

将数据发布到基础数据源.

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值