创建一个kendo多选所选id的数组

时间:2014-01-28 11:59:17

标签: javascript jquery kendo-ui

我尝试使用kendo multi select创建一个选定id的数组。
这是jsfiddle
这是kendo脚本: -

$("#multiselect").kendoMultiSelect({
  dataSource: [
    { id: 1, name: "Apples" },
    { id: 2, name: "Oranges" }
  ],
  dataTextField: "name",
  dataValueField: "id",
    select:onSelect
});

kendo选择功能: -

function onSelect(e){
    var dataItem = this.dataSource.view()[e.item.index()];
    onchng(dataItem.id);
}

创建一个数组: -

function onchng(id){
var checkarr = [];
    checkarr.push(id);
    console.log(checkarr);
}

此处输出为[1] [2]
但我想要['1','2']
有可能吗?
感谢

3 个答案:

答案 0 :(得分:0)

当你的select事件被触发时,'checkarr'会一次又一次地重新定义。你的问题是。如果要在一个数组中使用值,则必须使用按钮将值一起取出,然后将它们推送到单个函数中的数组。或者您可以使用会话或类似的东西

答案 1 :(得分:0)

这是您可以从Controller执行此操作的方法。注意我正在做Request.Form,这是因为无论出于何种原因,MVC Model和Kendo UI在使用MultiComplete时都无法协同工作。但是这会将它们放在一个数组中,这就像按下建议的其他答案一样点击按钮。

 string[] advertisers = Request.Form["Name"].ToString().Split(',');

答案 2 :(得分:0)

我认为有一种更简单的方法,副作用更少......

绑定change个事件而不是select。为什么?有两个原因:

  1. select在元素添加到值列表之前触发,因此您无法获取当前列表,并且需要将选定的值添加到已选择的值中。
  2. 删除选项选项时,不会触发
  3. select
  4. 使用change的代码非常简单:

    var multi = $("#multiselect").kendoMultiSelect({
        dataSource: [
            { id: 1, name: "Apples" },
            { id: 2, name: "Oranges" }
        ],
        dataTextField: "name",
        dataValueField: "id",
        change : onSelect
    }).data("kendoMultiSelect");
    
    function onSelect(){
        console.log("here", multi.value());
    }
    

    只需使用value中的multiselect方法。

    您的小提琴在此修改:http://docs.telerik.com/kendo-ui/api/framework/datasource#events-change

    注意:change事件属于DataSource,如果您需要查看文档,请检查here