1

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

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

这会在我的页面加载时加载。有没有办法对其进行编码,使其仅在我调用它以通过 javscript 加载时才加载?

4

3 回答 3

3

在服务器端初始化数据源而不执行读取。例如,.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 
});

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

于 2013-03-20T21:33:56.987 回答
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) )

您必须确保使用带有idand的选项标签name,否则将不会显示。

于 2014-02-27T18:05:21.090 回答
-2

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

于 2013-03-15T04:37:48.030 回答