2013-03-15 48 views
1

一個KendoUI下拉列表,如果我有一個下拉列表劍道如下綁定需求

@(Html.Kendo().DropDownList() 
     .Name("products") 
     .DataTextField("ProductName") 
     .DataValueField("ProductID") 
     .DataSource(source => { 
      source.Read(read => 
      { 
       read.Action("GetProducts", "Home"); 
      }); 
     }) 
) 

這時候我的加載頁面加載。有沒有一種方法來編寫它,以便它只在我通過javscript調用它時加載?

回答

3

在服務器端初始化DataSource而不執行Read。例如, .DataSource(source => {source.Type =「json」})。在客戶端事件處理程序,您可以使用AJAX檢索JSON數據和附加到下拉列表的數據源爲:

var dataretrieved = <ajax query here> 
$("#products").data("kendoDropDownList").dataSource.data(dataretrieved); 

另外,

在服務器端代碼不定義數據源。在客戶端事件處理程序中定義下拉列表的數據源。例如,

$("#products").data("kendoDropDownList").dataSource = new kendo.data.DataSource({ 
type: "json", 
data: dataretrieved 
}); 

注意數據類型被指示爲數據源定義的一部分。

-2

創建一個JS函數並將其放入其中。並在需要時調用該函數。

2

如果要加載的數據第一次當你打開下拉列表,您可以設置AutoBind = false,並添加一個OptionLabel這樣的:
@(Html.Kendo().DropDownList() .Name("products") .DataTextField("ProductName") .DataValueField("ProductID") .OptionLabel(new { ProductID = -1, ProductName= "Select Product"}) .DataSource(source => { source.Read(read => { read.Action("GetProducts", "Home"); }); }) .AutoBind(false) )

您必須確保使用選項標籤與idname否則不會顯示。