将项目数组添加到kendo ui multi select中

时间:2013-11-28 14:29:54

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

请原谅我的小说,但我不熟悉Telerik控件。我见过许多这方面的例子,但他们无法解决我的问题。我有一个Kendo UI多选小部件,其中包含一些项目和一个按钮,在点击时,它会部分地用一些项目填充多选小部件。这些项是从控制器方法(ASP.NET MVC)获得的JSON。因此,按钮单击实际上会触发ajax请求,并且在成功启动时,它会调用javascript函数来填充多选小部件。截至目前,ajax成功触发,我想要的数据成功返回,只是多选不显示值。

我的javascript / AJAX方法:

    function addItems(items) {
    var values = new Array();
    for (var i = 0; i < items.length; i++) {
        values[i] = items[i].Item.ID; 
        // gets values back correctly
        console.log(values[i]);
    }
    // print values
    $('#items').data("kendoMultiSelect").value(['"' + values + '"']);


};

// success
$(document).on("click", "#add-items-button", function () {
    var myUrl = $('#MyURL').val();    
    $.ajax({
        url: myUrl, // get URL from view
        method: 'GET',
        dataType: 'json',
        success: function (data) {
            addItems(data);
        },
        error: function (xhr, status, error) {
            console.log(error);
        }
    });
});

我的多选小部件是部分视图,所以:

    @using Kendo.Mvc.UI

@(Html.Kendo().MultiSelect()
    .Name("items") // Name of the widget should be the same as the name of the property
    .DataValueField("ID")
    .DataTextField("Name")   
    .BindTo((System.Collections.IEnumerable)ViewData["items"])
    .Placeholder("Add Items")
)

我错过了一些非常明显的东西吗?我是否以不正确的格式将数据写回多选小部件?请帮忙。

2 个答案:

答案 0 :(得分:0)

您需要将项添加到multiselect的数据源。

$('#items').data("kendoMultiSelect").dataSource.add( { ID: 1, Name: "Name" });

这是一个现场演示:http://jsbin.com/eseYidIt/1/edit

答案 1 :(得分:0)

它可能对其他人有帮助

var multiSelect = $('#mymultiSelect').data('kendoMultiSelect');
var val = multiSelect.value().slice();
$.merge(val, "anil.singh@hotmail.com");
multiSelect.value(val);
multiSelect.refresh();

OR

  

$(&#39;#mymultiSelect&#39)的数据(&#34; kendoMultiSelect&#34)dataSource.add({ID:&#34; EMP100XYZ&#34 ;,   EmailId:&#34; ayz@gmail.com" });