devextreme-реагирует на сетку данных, включает редактор отдельно для вставки (новые строки) и редактирования (существующие строки) - PullRequest
0 голосов
/ 13 мая 2019

Я использую devextreme-реакции. Мне нужно сделать некоторые ячейки вставляемыми (новые строки), но не редактируемыми (существующие строки), но в конфигурации предусмотрены только параметры allowEditing, которые не различают вставку новых записей или редактирование существующих.

Я попытался предоставить каждой ячейке пользовательские параметры «вставляемый» и «редактируемый», чтобы сделать ячейку редактируемой отдельно в другом контексте (только вставляемая, только редактируемая, в обоих контекстах).

Тогда я попробовал два подхода:

  1. onFocusedCellChanged Я бы закрыл активный редактор, когда он не нужен
  2. установите для параметра allowEditing значение false для всех ячеек и включите редактор onFocusedCellChanged только при необходимости, используя метод datagrid editCell (rowIndex, visibleColumnIndex).

Вот пример первого подхода:

Edit n9o67znjrp

Как видите, есть некоторые проблемы:

  1. автофокус на первом редактируемом поле не срабатывает onFocusedCellChanged
  2. Мне не хватает способа понять, является ли строка новой или нет, просто пытаюсь определить, является ли ключевое поле неопределенным или ноль не работает
  3. closeEditCell не закрывает редактор

Также использование второго подхода фокусировки не всегда срабатывает, и включение вручную редактора ничего не делает

1 Ответ

0 голосов
/ 14 мая 2019

Единственный способ решить эту проблему - использовать editCellRender, тогда редактор отображается только при соблюдении соответствующих условий.

Чтобы использовать editCellRender, я должен отделить конфигурацию столбцов от конфигурации сетки ииспользовать компонент Column (Datagrid.Column из devextreme-реакции / data-grid)

Чтобы различать вставку и обновление, я полагаюсь на поддержку dxkey, я не уверен, что это лучший способ.

Вот вилка кодов и коробка с решением:

Edit 1pw3r2597

...