Kendo ui 剑道网格:无法筛选下拉列表中的列

Kendo ui 剑道网格:无法筛选下拉列表中的列,kendo-ui,kendo-grid,kendo-dropdown,kendo-datasource,Kendo Ui,Kendo Grid,Kendo Dropdown,Kendo Datasource,我用模板定义了一个列:object.type,它是dropdownlist,有多种类型可供搜索 它有: editor : function (container, options) { $('<input data-text-field="display" data-value-field="id" data-bind="value:' + options.field + '"/>')

我用模板定义了一个列:object.type,它是dropdownlist,有多种类型可供搜索

它有:

                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
                            });
                    },
现在,我已经为该列定义了filterable属性:

                filterable : {
                    extra : false,
                    ui : function(element) {
                        element.kendoDropDownList({
                            index: 0,
                            dataTextField: "display",
                            dataValueField: "id",
                            dataSource: usergroupConf.permissions
                        });
                    }
                }
当我点击过滤器框时,它会显示filter fine,但当我从中选择某个值时,我会得到错误:

Uncaught TypeError: undefined is not a function 
所以简而言之,


如何过滤剑道网格中的下拉列表?

因此,经过大量研究,解决方案如下。在剑道网格中使用外键

创建附加字段,该字段是中所选值的关键字段 下拉列表 对于该列,将绑定到下拉列表的板条箱编辑器 会改变这个新领域吗

        {
            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--"
                    });
                }
            }
        },
因此,最后,在填充数据时,您必须添加权限作为对象:

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

    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