0

嗨,我有以下要求:devexpress 中用于 winform 的网格控件。此网格的第 1 列是 repositoryItemCheckedComboBoxEdit,我如何获取当前行,然后仅为该行重置 repositoryItemCheckedComboBoxEdit 的数据源?

4

2 回答 2

2

此类任务通常使用 GridView 的ShownEditor事件来实现。您应该确定当前焦点列及其字段名 (GridView.FocusedColumn.FieldName),然后根据保存在该记录的另一个单元格中的值更改编辑器的 DataSource 属性。IE

private void gridView1_ShownEditor(object sender, EventArgs e) {
            GridView gridView = sender as GridView;
            if(gridView.FocusedColumn.FieldName == "YourField") {
                CheckedComboBoxEdit edit = gridView.ActiveEditor as CheckedComboBoxEdit;
                object value = gridView.GetRowCellValue(gridView.FocusedRowHandle, "AnotherColumn");
                // filter the datasource and set the editor's DataSource:
                edit.Properties.DataSource = FilteredDataSource;// your value
            }
        }

此外,请查看如何根据第一个 LookUp 列的值过滤第二个 LookUp 列,其中解决了类似任务。

于 2011-05-17T21:43:01.917 回答
0

您可以处理该FocusedRowChanged事件,然后根据视图的GetFocusedRow().

您可能需要一个带有完整数据源的单独编辑器来显示非重点列中的值,并CustomRowCellEditForEditing在编辑模式下处理使用子集。

于 2011-05-17T19:58:09.727 回答