2016-08-18 21 views
1

我想从我的Kendo multiselect中获取所选项目的数组,这是在剑道网格的编辑器模板中。从kendo multiselect获取选定的数据数组

的多选代码:

@(Html.Kendo().MultiSelect() 
     .Name("Staff") 
     .DataValueField("ID") 
     .DataTextField("FullName") 
     .BindTo((System.Collections.IEnumerable)ViewData["Staff"]) 
     .Events(events => events 
      .Change("onChange") 
     ) 
     .HtmlAttributes(new { @class = "col-md-7 details-editor" }) 
    ) 

我想提取使用JQuery所选项目 - 具体而言,我想要的DataValueField,这是一个整数。我尝试了几件事情,但一直无法获得适当的整数,而不是ViewData集合中项目的索引。我尝试过的一些方法。

var data = $("#Staff").data("kendoMultiSelect").dataItems(); 
var data = $("#Staff").data("kendoMultiSelect").value(); 

我真的不知道该从这里做什么,如何使用上述或不同的路线之一来获得正确的int数组。

感谢您的帮助!

回答

0

一个.Select("onSelect")事件添加到多选和附加价值,以隐藏元素每次当用户使用选择的项目:

function onSelect(e) { 
       var item = e.item; 
       var text = item.text(); 
        var $data = $('#myHidden'); 
        $data.val($data.val() + text); 
      }; 
+0

当我这样做时,dataItem.value是“未定义”。 – hallordylo

+1

尝试更新的代码或使用@Ben方法 – Vijai

0

要获得所选项目的ID,你可以写你的onChange方法如下所示:

var onChange = function(e) { 
var arrayOfNames = this.value(); 
// Do other stuff here... 
}; 

发生更改事件的文档可以找到here

我也写了一个工作示例here

+0

因此,这可以正确设置隐藏值,但是当我点击更新时,数组中的所有值都变为0,并且ModelState.IsValid条件失败。这是为什么? – hallordylo

+0

原来上面是一个更大的问题的一部分,现在已经解决了。谢谢您的帮助! – hallordylo

+0

@hallordylo很高兴你解决了你的问题。您现在应该接受一个答案或回答自己的问题,以便提出您的问题。 –

0

答案比你想象的要简单。

$('#Staff').val(); 

这将返回逗号分隔列表中任何在您的.DataValueField。在你的情况下,一个逗号分隔的'ID'列表。

相关问题