2013-11-28 99 views
0

请原谅我的noobness,但我是新来的使用Telerik控件。我见过很多这方面的例子,但他们一直无法解决我的问题。我有一个Kendo UI multiselect小部件,其中包含一些项目和一个按钮,点击后会用多个项目部分填充多选部件。这些项目是以控制器方法(ASP.NET MVC)的JSON形式获取的。所以,按钮点击实际上会触发ajax请求,并且在成功启动时,会调用javascript函数来填充多选部件。截至目前,ajax被成功解雇,我想要的数据成功回归,只是多选不显示值。将项目添加到kendo ui multi select

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

我缺少的东西很明显?我是否将数据以不正确的格式写回多选控件?请帮忙。

回答

0

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

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

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

+0

所以我实际上并不需要使用.value来呈现数据,是吗?你能否给我提供一个jsFiddle演示文件,用于处理一系列数据(在for循环中),而不是硬编码ID和名称? –

+0

其实,我想通了,谢谢你的方向:) –

+0

哦,对不起,这个问题已经解决了,但是你能否告诉我如何在多选控件区域中设置这些项目后,如何从列表中删除这些项目?有没有我需要打电话的事件? –

0

它可以帮助别人

var multiSelect = $('#mymultiSelect').data('kendoMultiSelect'); 
var val = multiSelect.value().slice(); 
$.merge(val, "[email protected]"); 
multiSelect.value(val); 
multiSelect.refresh(); 

OR

$( '#mymultiSelect')数据(“kendoMultiSelect”)。dataSource.add({Id:“EMP100XYZ”, EmailId:“[email protected]”});