我可以为网格中的列设置数据源,仅针对一个特定行吗?

时间:2011-05-17 19:55:07

标签: c# winforms devexpress xtragrid xtraeditors

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

2 个答案:

答案 0 :(得分:2)

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

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
            }
        }

另外,请查看解决类似任务的How to filter a second LookUp column based on a first LookUp column's value文章。

答案 1 :(得分:0)

您可以处理FocusedRowChanged事件,然后根据视图GetFocusedRow()设置DataSource。

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