Как отключить несколько столбцов в строке на основе условия в Webix datatable

У меня есть таблица данных Webix с именами столбцов, такими как «№», «Имя», «Действие», «Телефон», «Комментарии». Ниже представлены типы столбцов:

  1. 'Нет.' столбцы и "Имя" всегда доступны только для чтения.
  2. Остальные три «Действие», «Телефон» и «Комментарии» доступны для редактирования, плюс ячейки в столбцах «Действие» и «Телефон» имеют раскрывающиеся меню.

Требование: Допустим, для определенного значения в поле «Имя» (например, «Отметить») я хочу отключить все редактируемые поля этой конкретной строки. Либо строка должна отображаться как отключенная (только для чтения), либо непосредственно перед редактированием редактируемые поля будут отключены (только для чтения). Все остальные строки должны вести себя как обычно.

Я попытался добиться этого с помощью события onBeforeEditStart здесь, на странице https://webix.com/snippet/3bafd99c

Однако у меня возникают проблемы с его реализацией. Любая помощь была бы замечательной.

Спасибо.


person A.G.Progm.Enthusiast    schedule 22.06.2017    source источник


Ответы (1)


Вы можете использовать следующий код

onBeforeEditStart:function(id){
     return this.getItem(id).id1 !== "Mark";
}

https://webix.com/snippet/306471fc

Вызов getItem возвращает текущую строку, а следующая проверка сравнивает значение столбца name с контрольным. (использование id: "name" в конфигурации столбцов сделает строку выше более читаемой)

person Aquatic    schedule 23.06.2017
comment
Прежде всего, спасибо. Я попросил функцию name == Mark просто, чтобы задать требование более простыми словами. Если я хочу проверить много чего в функции checkAccess и вернуть true или false, а затем на основе этого возврата я хочу отключить ячейки, возможно ли это? Я имею в виду именно то, как я это сделал в своих фрагментах. - person A.G.Progm.Enthusiast; 23.06.2017