Как реализовать пользовательский валидатор Kendo UI на уровне сетки

У меня есть сетка пользовательского интерфейса Kendo, настроенная для пакетного редактирования. Я хочу добиться пользовательской проверки уровня сетки перед вызовом функций CRUD сетки. Предположим, что сетка отображает список сотрудников, а пользователь добавляет двух сотрудников с одинаковым идентификатором EmployeeID; затем при нажатии кнопки «Сохранить изменения» сетка должна вызывать пользовательские правила валидатора (скажем, у нас есть одно правило для проверки уникальности всех идентификаторов сотрудников). Основываясь на результате проверки, сетка должна решить, вызывать ли ей функции создания / обновления / уничтожения.

Я был бы очень признателен, если бы кто-нибудь мог ответить на мою проблему.

Моя сетка кендо:

<div id="allocGrid" kendo-validator="ctrl.allocationGridValidatorRules" kendo-grid k-options="ctrl.allocationGridOptions(dataItem)"></div>

Правила валидации:

ctrl.allocationGridValidatorRules = {
        rules: {
            customRule1: function (input) {
                // this rule may check if all the employee Id's in the grid are unique
            }
        },
        messages: {
            customRule1: "Enter a unique Employee Id"
        }
    };

Я имел в виду следующие ссылки:

http://jsfiddle.net/davidsalahi/qMRBc/

http://demos.telerik.com/kendo-ui/validator/angular


person Lucifer    schedule 09.12.2015    source источник


Ответы (2)


Если вы выполняете пакетное редактирование и хотите проверить дубликаты, я предлагаю вам использовать saveChanges, где вы можете проверить e.sender.dataSource и при необходимости прекратить сохранение изменений

saveChanges: function(e) {
    if (!confirm("Are you sure you want to save all changes?")) {
       e.preventDefault(); 
    }
person softawareblog.com    schedule 09.12.2015

В этом случае вам необходимо создать настраиваемые проверки в DataSource, привязанном к вашей сетке. Например, вы можете сделать что-то вроде этого:

employees = new kendo.data.DataSource({
   schema: {
      model: {
         fields: {
            EmployeeID: {
               validation: {
                  employeeidvalidation: function(input){
                     if(input.is('[name="EmployeeID"]'){
                        //Implement custom validation here...
                     }
                     return true;
                  }
               }
            }
         }
      }
   }
});
person Manuel Zapata    schedule 09.12.2015