DevExpress VerticalGrid绑定到DataTable的DefaultView

时间:2017-04-24 16:52:06

标签: data-binding ado.net devexpress-windows-ui

背景: 我已经在 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

问题: 有没有办法将网格置于一个模式,一旦单元格编辑器失去焦点,数据源就会更新?例如,如果编辑名称,并且用户移至地址,数据源会立即反映更改吗?

1 个答案:

答案 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;
    }