2015-03-05 3 views
0

Я думал, что буду делать что-то простое, так как пользовательский интерфейс Kendo уже может сделать так много, увы, это не так просто, как я думал. Радио кнопки делают это трудно.Несколько переключателей в сетке пользовательского интерфейса Kendo с встроенным и серийным редактированием

Я пытаюсь создать маску разрешения так же, как вы можете увидеть здесь:

enter image description here

И соответствующий, почти работая JSFiddle: http://jsfiddle.net/oz0b7xcu/

В настоящее время у меня есть View, Edit и None как отдельные столбцы - я могу представить, что они являются enum.

Я понял, как использовать template & editor на field, чтобы отобразить boolean с радио кнопки вместо «истинный»/«ложный».

Мои проблемы:

  • В настоящее время встроенный редактор реагирует только тогда, когда я нажимаю следующий на кнопку радио. Только после его активации я могу выбрать его. После «ухода» поля значение не сохраняется. (Попробуйте в JSFiddle)
  • Как создать кнопку «Сохранить измененные разрешения»? Мне нужно одно событие для каждого измененного разрешения и добавить его в какой-то массив.
  • Как мне заставить его работать на нескольких страницах, сохраняя текущее разрешение «изменить набор»
  • Как отредактировать отредактированную строку как «грязную»/«изменилась»?

Я думаю, что я пытаюсь сделать, это довольно ясно:

  • У меня есть список пользователей с правами доступа
  • Я хочу, чтобы иметь возможность быстро редактировать все пользователи (партии) и просто выберите вариант просмотр/редактирование/NONE (эксклюзивный)
  • Может быть визуализации для измененных строк (грязных)
  • Когда я закончу, я хочу, чтобы получить список всех измененных разрешений

PS: Может быть, все это было бы проще с помощью «виртуальных столбцов»? Имейте только одно поле PermissionMask и в зависимости от его значения заполняются виртуальные столбцы. Возможное? Может быть, лучшее решение? Я не зависеть от какого-либо источника данных, поэтому я мог бы определить что-то другое здесь ...

ответ

1

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

columns: [ 
      { field: "Name" }, { 
       field: "View", 
       width: "80px", 
       template: "<input type='radio' name='#: uid #' onclick='markDirty(this);' />" 
      }, { 
       field: "Edit", 
       width: "80px", 
       template: "<input type='radio' name='#: uid #' onclick='markDirty(this);' />" 
     }, { 
      field: "None", 
      width: "80px", 
      template: "<input type='radio' name='#: uid #' onclick='markDirty(this);'/>" 

Мы можем вручную пометить запись как загрязненную при изменении выбора.

function markDirty(ctrl) { 
     $("#grid").data("kendoGrid").dataSource.getByUid(ctrl.name).dirty = true; 
    } 

Наконец, вы можете получить источник данных из сетки нажатием кнопки и выполнить любое требуемое действие.

//this will have the data in an array 
var data = $("#grid").data("kendoGrid").dataSource.data(); 

Надеюсь, это поможет.

Смежные вопросы