背景: 我已经在 unbound 模式下使用了VerticalGrid几年,我使用自己的代码在编辑器和数据对象之间处理数据。
现在我尝试在MultiRecord布局模式下使用它
Name: [ ] Name: [ ] Name: [ ]
Addr: [ ] Addr: [ ] Addr: [ ]
City: [ ] City: [ ] City: [ ]
并将其绑定到System.Data.DataTable的DefaultView:
vGridControl1.DataSource = myDataTable.DefaultView;
vGridControl1.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
但是,在编辑的记录失去焦点之前,记录的更改不会被推送到DataView 。
问题: 有没有办法将网格置于一个模式,一旦单元格编辑器失去焦点,数据源就会更新?例如,如果编辑名称,并且用户移至地址,数据源会立即反映更改吗?
答案 0 :(得分:1)
您可以在ValidatingEditor事件中执行此操作,如下所示:
private void vGridControl1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
{
vGridControl1.UpdateFocusedRecord();
}
以下内容将更新数据源中的字段明确性,而不尝试编写整个记录:
private void vGridControl1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
{
var list = vGridControl1.DataSource as IList;
var record = list[vGridControl1.FocusedRecord] as DataRowView;
record[vGridControl1.FocusedRow.Index] = e.Value;
}