将项目数组添加到剑道ui多选中

Add array of items into kendo ui multi select

本文关键字:ui 项目 项目数 数组 添加      更新时间:2023-11-22

请原谅我的无知,但我是Telerik控件的新手。我见过很多这样的例子,但都没能解决我的问题。我有一个Kendo UI多选小部件,它包含一些项目,还有一个按钮,点击后,会用一些项目部分填充多选小部件。这些项是从控制器方法(ASP.NET MVC)中以JSON形式获得的。因此,点击按钮实际上会触发一个ajax请求,一旦成功启动,它就会调用一个javascript函数来填充多选小部件。到目前为止,ajax成功启动,我想要的数据也成功返回,只是multiselect没有显示值。

我的javascript/AAJAX方法:

    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")
)

我是不是错过了一些显而易见的东西?我是否以错误的格式将数据写回多选小部件?请帮忙。

您需要将项目添加到多选的数据源中。

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

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

这可能对其他有所帮助

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

$('#mymultiSelect').data("kendoMultiSelect").dataSource.add({Id:"EMP100XYZ",电子邮件ID:"ayz@gmail.com"});