Привет, у меня есть следующее требование: элемент управления сеткой в devexpress для winform. Столбец 1 для этой сетки — это репозиторийItemCheckedComboBoxEdit, как я могу получить текущую строку, а затем сбросить источник данных для репозиторияItemCheckedComboBoxEdit только для этой строки?
Могу ли я установить источник данных для столбца в сетке только для одной конкретной строки?
Ответы:
Такие задачи обычно реализуются с помощью события GridView ShownEditor. Вы должны определить текущий столбец и его имя поля (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
}
}
Кроме того, ознакомьтесь с Как отфильтровать второй столбец LookUp на основе первого Значение столбца LookUp, статья, в которой решена аналогичная задача.
Вы можете обработать событие FocusedRowChanged
, а затем установить источник данных на основе представления GetFocusedRow()
.
Возможно, вам понадобится отдельный редактор с полным источником данных для отображения значений в несфокусированных столбцах и обработка CustomRowCellEditForEditing
для использования подмножества в режиме редактирования.
GetFocusedRow()
, либо вызовите GetFocusedRowCellValue()
) 18.05.2011