GoTo Add and Remove Rows 添加和删除行
将数据发布到基础数据源
Common Tips 常见提示
数据网格(以及其他 DevExpress 数据感知控件)不直接与底层数据库交互。相反,它与数据源一起使用,而数据源又从数据库中检索数据。要将更改推送到底层数据库,请使用数据源 API。
无论采用何种数据绑定方法,对基础源的更改通常都应在以下事件中发布:
-
ColumnView.RowUpdated
在最终用户完成对行的修改并尝试导航到另一行后发生。当编辑器仍处于活动状态时 (BaseView.IsEditing),RowUpdated 不会触发,因此要推送更改,您需要先关闭此编辑器 (BaseView.CloseEditor),然后调用 BaseView.UpdateCurrentRow 方法手动触发此事件。 -
ColumnView.InitNewRow |ColumnView.RowDeleted
当最终用户添加或删除数据网格行时出现。 -
Form.Closing Form.Closing
一个标准的 WinForms 事件,它允许您避免过多的更新,并在关闭应用程序之前一次保存所有更改。
在主从数据网格中,在设计时或在代码中创建的详图视图称为 Pattern Views。这些视图未连接到实际数据,并且其与数据相关的 API 不起作用。详细信息数据存储在 Pattern View copies – Clone Views 中。要发布在详细视图中所做的更改,您首先需要检索这样的 Clone View。为此,请调用 GridView.GetDetailView 方法。然后,您可以使用此 Clone View 的 CloseEditor 和 UpdateCurrentRow 方法。有关更多信息,请参阅此帮助主题:在代码中使用主从关系。
使用数据适配器和数据集
在传统的 ADO.NET 数据绑定中,数据网格绑定到 数据集 ,由数据适配器从基础数据源填充 。在这种情况下,若要将更改发布回基础数据源,请调用 Adapter 的 Update 方法。
using DevExpress.XtraGrid.Views.Base;
//. . .
ColumnView view = gridControl1.FocusedView as ColumnView;
view.CloseEditor();
if(view.UpdateCurrentRow()) {
sqlDataAdapter1.Update(myDataSet, MyTable);
}
//. . .
请注意,要保存更改,Adapter 必须生成 INSERT、UPDATE 和 DELETE 命令。