2016-11-04 1 views
0

私は剣道で剣道のグリッドを持っています.2つの列があります:ユーザー名と役割。編集時の役割の列はドロップダウンです。グリッドにはバリデーションがあります。私は同じ役割を持つユーザー名を持つことはできません。シナリオが機能しなくなるまで、私はすべての神を見ています:すでに存在するユーザー名とロールを設定すると、検証は(ここまではOKです)、その後は他のロール(有効)を選択するとレコードが追加されますユーザー名は削除されます。なぜか分からない。私はこの例から始めました:enter link description herethisもあります) enter link description hereに私のコードを設定しようとしましたが、なぜロードされないのかわかりません。ここで剣道のドロップダウンでグリッドのテキストを消去した後、それを修正する方法は?

は私のコードです:

  var roles = [ 
      {role: "SYSTEM_USER", roleId: 1}, 
      {role: "COMPONENT_EDITOR", roleId: 2}, 
      {role: "CHANGE_REQUEST_EDITOR", roleId: 3} 
     ]; 


$(document).ready(function() { 
var permissionDataSource = new kendo.data.DataSource({ 
       dataType: "json", 
       data: this.model.get("permissions"), 
       schema: { 
        model: { 
         id: "userName", 
         fields: { 
          userName: { 
           type: "text", 
           editable: true, 
           validation: { 
            required: true, 
            roleIsUniqueValidation: function (input){ 
             if (input.is("[name='userName']")) { 
              var currentUserName = input.val(); 
              var currentRole = $($(this.element.children()[1]).children()).children().text(); 
              var currentId = this.element.data("uid"); 
              var elements = $("#kendoGrid").data().kendoGrid.dataSource.view(); 

              for (var i = 0; i < elements.length; i++) { 

               var el = elements[i]; 

               // exclude from checks the current row 
               if (el.uid != currentId) { 

                // check if there are docs with the same type and number combination 
                if (el.userName == currentUserName && el.role == currentRole) { 
                 input.attr("data-roleIsUniqueValidation-msg", "Role already exists for this user"); 
                 return false; 
                } 

               } 
              } 
             } 
             return true; 

            } 
           } 
          }, 
          role: { 
           defaultValue: {role: "SYSTEM_USER", roleId: 1} 
          } 
         } 
        } 
       }}); 

     // transform grid to kendogrid 
     $("#kendoGrid").kendoGrid({ 
      dataSource: permissionDataSource, 
      sortable: true, 
      scrollable: true, 
      height:300, 
      dataBound: function(){ 
       thisView._resizeKendoGrid(); 
      }, 
      editable: { 
       mode: "inline" 
      }, 
      columns: [{ 
       field: "userName", 
       title: "Username" 
       }, { 
        field: "role", 
        title: "Role", 
        template: "#=role#", 
        width: 240, 
        editor: rolesDropDownEditor 
       }, 
       { 
        title: "#", 
        command: [{ 
         name: "edit", 
         text: { update: "Add"} 
        },{ 
         name: "destroy" 
         } 
        ], 
       hidden: true 
       }] 

      }); 
} 
function categoryDropDownEditor(container, options) { 
$('<input data-text-field="CategoryName" data-value-field="CategoryID" data-value-field="CategoryName" data-bind="value:' + options.field + '"/>').appendTo(container).kendoDropDownList({ 
    autoBind: false, 
    dataSource: { 
     data: categories      
    } 
}); 

}

私が間違ってやっている正確に何を?私はテンプレートだと思いますが、私はよく分かりません。

+0

ここで、rolesDropDownEditor – Rajdeep

答えて

0

あなたは、このドロップダウン・エディタを使用する必要があります。それは良く試験することができるように、

function rolesDropDownEditor(container, options) { 
$('<input data-text-field="roleId" data-value-field="role" data-bind="value:' + options.field + '"/>') 
.appendTo(container).kendoDropDownList({ 
autoBind: true, 
dataSource: { 
    data: roles      
} 
}); 
} 

はまた、あなたがグリッドに渡しているデータを提供します。

関連する問題