【问题标题】:Get selected data array from kendo multiselect从剑道多选中获取选定的数据数组
【发布时间】:2016-08-18 21:17:52
【问题描述】:

我正在尝试从我的剑道多选中获取所选项目的数组,该多选位于剑道网格的编辑器模板中。

多选代码:

@(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 数组。

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery asp.net-mvc kendo-ui multi-select


    【解决方案1】:

    答案比你想象的要简单。

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

    这将返回 .DataValueField 中任何内容的逗号分隔列表。在您的情况下,“ID”的逗号分隔列表。

    【讨论】:

    • 天才很简单@lincstar182 Tanx
    【解决方案2】:

    要获取所选项目的 ID,您可以编写 onChange 方法,如下所示:

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

    可以在here 找到更改事件的文档。

    我还写了一个工作示例here

    【讨论】:

    • 所以这可以正确设置隐藏的值,但是当我点击更新时,数组中的所有值都变为 0,并且 ModelState.IsValid 条件失败。这是为什么呢?
    • 原来上面是一个更大问题的一部分,现在已经解决了。感谢您的帮助!
    • @hallordylo 很高兴你解决了你的问题。您现在应该接受答案或回答您自己的问题以结束您的问题。
    【解决方案3】:

    在多选中添加一个.Select("onSelect") 事件,并在每次用户使用以下方式选择项目时将值附加到隐藏元素:

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

    【讨论】:

    • 当我这样做时,dataItem.value 为“未定义”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2013-11-19
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多