按需绑定 KendoUI 下拉列表
2013-03-15
11675
如果我有一个如下的 kendo 下拉列表
@(Html.Kendo().DropDownList()
.Name("products")
.DataTextField("ProductName")
.DataValueField("ProductID")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetProducts", "Home");
});
})
)
当我的页面加载时,它会加载。有没有办法对其进行编码,使其仅在我通过 javscript 调用它加载时才加载?
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
});
注意数据类型是数据源定义的一部分。
ideafountain
2013-03-20
如果您想在打开下拉列表时第一次加载数据,您可以设置
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)
)
您必须确保使用带有
id
和
name
的选项标签,否则将不会显示。
Razvan
2014-02-27
创建一个 JS 函数并将此代码放入其中。并在需要时调用该函数。
Naresh
2013-03-15