根据需要绑定KendoUI下拉列表

时间:2013-03-15 01:38:11

标签: jquery .net asp.net-mvc kendo-ui html-select

如果我有一个如下的剑道下拉列表

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

当我的页面加载时加载。有没有办法对它进行编码,以便只在我通过javscript加载它时加载?

3 个答案:

答案 0 :(得分:3)

在服务器端初始化DataSource而不执行Read。例如, .DataSource(source => {source.Type =“json”})。在客户端事件处理程序上,您可以使用ajax检索JSON数据并附加到dropdownlist数据源:

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

可替换地,

在服务器端代码中,不定义数据源。在客户端事件处理程序中定义下拉列表的数据源。例如,

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

注意数据类型表示为数据源定义的一部分。

答案 1 :(得分: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的选项标签,否则将无法显示。

答案 2 :(得分:-2)

创建一个JS函数并将此代码放入其中。并在需要时调用该函数。