Ситуация с CustomColumnDataEventArgs , которую вы упомянули (предоставление несвязанных данных для определенного столбца), не имеет отношения к процессу редактирования GridView.Когда происходит событие CustomRowCellEdit, все дескрипторы строк уже рассчитаны.Таким образом, нет мотивации избегать первого подхода.
Единственная рекомендация, которую я могу предложить, - использовать предопределенный элемент хранилища вместо создания нового каждый раз:
void GridView_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
GridView view = sender as GridView;
if(e.Column.FieldName == CONSTS_FIELD_NAME) {
var val = (VAL_TYPE)view.GetRowCellValue(e.RowHandle, CONSTS_VAL);
if(val == VAL_VALUE)
e.RepositoryItem = repositoryItemForVAL_VALUE;
}
}
Чтобы использовать конкретный редактор только для редактирования на месте , вам нужно обработать событие CustomRowCellEditForEditing .
Пожалуйста, также внимательно прочитайте раздел «Примечания» GridView.CustomRowCellEdit документация о событии, в которой четко описано, как работает это событие.