Kendo ui 剑道网格,使用MultiSelect-can';无法获取模型中的选定项

Kendo ui 剑道网格,使用MultiSelect-can';无法获取模型中的选定项,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,因此,标题几乎说明了一切。我正在尝试将新的MultiSelect小部件合并到网格的自定义弹出编辑器模板中 我正在使用数据属性初始化方法并从远程数据源读取下拉选项。这一切正常,但我无法将所选项目的值放入模型中 保存行时,将向服务器发送一个数据数组,表示在MultiSelect中选择的第一个数据项,而不是以逗号分隔的选定值列表 你知道如何将MultiSelect值(选定值的列表/数组)放入网格模型吗 谢谢 编辑:我现在使用了一种变通方法,但我想知道是否有一种“正确的方法”可以将多重选择与网格一起使用

因此,标题几乎说明了一切。我正在尝试将新的MultiSelect小部件合并到网格的自定义弹出编辑器模板中

我正在使用数据属性初始化方法并从远程数据源读取下拉选项。这一切正常,但我无法将所选项目的值放入模型中

保存行时,将向服务器发送一个数据数组,表示在MultiSelect中选择的第一个数据项,而不是以逗号分隔的选定值列表

你知道如何将MultiSelect值(选定值的列表/数组)放入网格模型吗

谢谢

编辑:我现在使用了一种变通方法,但我想知道是否有一种“正确的方法”可以将多重选择与网格一起使用

解决方法是在网格的配置中添加如下内容:

save: function(e) { 
    e.model.items = $('#select_items').data("kendoMultiSelect").value();
}
这是弹出编辑器模板的相关部分:

<input name="select_items" id="select_items" data-value-field="id" 
data-text-field="description" data-source="itemsDataSource" 
data-role="multiselect" data-auto-bind="false" data-item-template="itemList">


我在模型定义中没有
select\u items
:我正在使用上面的解决方法将MultiSelect的值复制到模型中的
items
。这似乎是可行的,我只是不知道为什么有必要这样做。

要在网格中使用
多选
,需要考虑以下几个问题:

  • 网格编辑器仅支持列
    string
    boolean
    number
    date
    的类型。因为您将要保存一个。。。假设
    string
    您必须解决这个问题
  • 由于您正在从服务器接收一组值,因此必须使用
    模板
    将其序列化为
    字符串
    ,以便显示从服务器接收的值
  • KendoUI无法猜测您想要使用MultiSelect作为输入,因此您必须提供和
    编辑器
    功能
  • 让我们围绕这些问题展开工作:

    要解决
    string
    array
    问题,最简单的解决方案是不向KendoUI透露接收到的内容

    对于
    模板
    ,我将使用JavaScript
    join
    方法将所有值拉到一起,用“,”分隔。比如:

    { field: "Cities", template: "#= Cities.join(', ') #" }
    
    最后,对于编辑器,我使用:

    { field: "Cities", template: "#= Cities.join(', ') #", editor : citiesEditor }
    
    function citiesEditor(container, options) {
        $("<select multiple='multiple' data-bind='value : Cities'/>").appendTo(container).kendoMultiSelect({
            dataSource: citiesDS
        });
    }
    
    当您更新(保存)时,它将向主机发送一个
    字符串数组
    ,其中包含
    城市
    字段中引入的城市


    示例:这里

    您可以在OP中包含编辑器代码吗?在我看来,问题在于编辑器和multiselect定义没有更新模型。。。这可能与模型定义有关吗?MultiSelect的字段类型应该是什么?我使用的是
    string
    对吗?在内部,它是一个字符串数组,但在显示时(输入)是数组的序列化,然后是字符串。您可以在transport.create/transport.update中使用map将其转换为服务器中所需的任何内容(您也可以在parameterMap(检查数据源文档)中进行转换),感谢您的提示。我尝试通过添加:
    console.dir(e.model.items)来查看保存时传递给模型的内容
    进入网格的
    保存
    功能。它只显示
    [object object]
    ,没有属性。我尝试将
    data.items=kendo.stringify(data.items);
    添加到transport.update中,但也不起作用——只返回
    “[object object]”“
    。非常感谢您的建议。您希望向服务器发送什么:用逗号分隔的选项字符串或选项数组?非常感谢。将使用此选项。
    var citiesDS = [
        "Boston", "Kirkland", "London", "New York", "Philadelphia", "Redmond", "Seattle", "Tacoma"
    ];