2014-07-10 60 views
1

我有列定义与模板:“object.type”,它是下拉列表(有多种类型进行搜索)。kendo-grid:不能过滤列是下拉列表

它具有编辑:

   editor : function (container, options) { 
         $('<input data-text-field="display" data-value-field="id" data-bind="value:' + options.field + '"/>') 
          .appendTo(container) 
          .kendoDropDownList({ 
           index: 0, 
           dataTextField: "display", 
           dataValueField: "id", 
           dataSource: usergroupConf.permissions 
          }); 
        }, 

所以此列元件是具有键ID和显示,例如对象该列

{ 
    "id":"1", 
    "display":"Big" 
} 

现在,我已经定义过滤特性:

   filterable : { 
        extra : false, 
        ui : function(element) { 
         element.kendoDropDownList({ 
          index: 0, 
          dataTextField: "display", 
          dataValueField: "id", 
          dataSource: usergroupConf.permissions 
         }); 
        } 
       } 

当我点击过滤箱它显示过滤器很好,但是当我从中选择一些值,我得到错误:

总之
Uncaught TypeError: undefined is not a function 

所以,

如何在剑道的网格过滤列这是博士opdowns?

回答

2

因此,经过大量研究后,结果正在跟随。在剑道网格中使用外键。

  1. 创建附加字段,该字段是关键在 下拉
  2. 为其选择将被结合到下拉该列,板条箱编辑器中的值,并且它 将改变这个新的字段

     { 
          field: 'permission_id', 
          title : 'Permission', 
          // values : usergroupConf.permissions, 
          template : "#= permission.display #", 
          editor : function (container, options) { 
           // bind it to permission, but update permission_id as well (because of enabled filtering) 
           $('<input data-text-field="display" data-value-field="id" data-bind="value:permission"/>') 
            .appendTo(container) 
            .kendoDropDownList({ 
             index: 0, 
             dataTextField: "display", 
             dataValueField: "id", 
             dataSource: usergroupConf.permissions, 
             select : function(e) { 
              options.model.permission_id = this.dataItem(e.item.index()).id; 
             } 
            }); 
          }, 
          filterable : { 
           extra : false, 
           ui : function(element) { 
            element.kendoDropDownList({ 
             dataSource: usergroupConf.permissions, 
             dataTextField: "display", 
             dataValueField: "id", 
             optionLabel: "--Select Value--" 
            }); 
           } 
          } 
         }, 
    
  3. 这是数据源

    dataSource: new kendo.data.DataSource({ 
         // pageSize: 10, 
         serverPaging: false, 
         schema: { 
          model: { 
           id : 'id', 
           fields: { 
            'id' : {}, 
            'name' : { 
             editable : false, 
             nullable : false 
            }, 
            'permission' : { 
             editable : true 
            }, 
            'permission_id' : { // we'll have permission_id to enable filter (kendo doesn't support filtering through objects (what permission column is) by default) 
             editable : true, 
             type : 'number' 
            } 
           } 
          } 
         }, 
    

所以最后,填充数据时,你必须添加权限的对象:

{ 
    "id":1 
    "display":"Move" 
} 

permission_id:1