欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Add and Remove Rows 添加和删除行

Add and Remove Rows 添加和删除行

2025/7/9 7:25:09 来源:https://blog.csdn.net/missingzlp/article/details/143646695  浏览:    关键词: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() 方法。

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

待续。。。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词