2013-11-28 94 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]」});