我现在正在评估Kendo UI,以便在我们的大型应用程序中使用。我们有一个情况,即下拉列表中有很多值(如200+),并且有多个具有该大小的下拉列表。因此,如果我们有一个复杂的表单,页面加载需要时间来呈现表单。(由于每个框都需要从服务加载并填充)。
我们通过编写自己的asp.net Web控件来避免这种情况,支持按需加载(如kendo ui中下拉列表中的autoBind属性)。
现在,KendoUI的DropDownList在autobind = false的情况下可满足要求,但是在设置值时,它会首先获取远程绑定数据,然后选择适当的值。(这很酷,对于小列表来说真的很好),但潜在地意味着当我们加载页面并设置值时,它将为每个下拉列表发出远程绑定调用。
现在,
我们能否设置值/文本而不发出远程绑定?我们希望仅在用户单击下拉列表本身时才执行远程绑定。(而不是在我们填写表单时)。这将节省额外的系统调用,并帮助快速向用户呈现表单。
这里是JS Bin。
我们通过编写自己的asp.net Web控件来避免这种情况,支持按需加载(如kendo ui中下拉列表中的autoBind属性)。
现在,KendoUI的DropDownList在autobind = false的情况下可满足要求,但是在设置值时,它会首先获取远程绑定数据,然后选择适当的值。(这很酷,对于小列表来说真的很好),但潜在地意味着当我们加载页面并设置值时,它将为每个下拉列表发出远程绑定调用。
现在,
我们能否设置值/文本而不发出远程绑定?我们希望仅在用户单击下拉列表本身时才执行远程绑定。(而不是在我们填写表单时)。这将节省额外的系统调用,并帮助快速向用户呈现表单。
这里是JS Bin。
http://jsbin.com/ayivad/3/edit
如果kendo ui的某个人希望我提供帮助,请告诉我,但这个想法将允许我们很好地使用kendo ui下拉框。<input type="button" id="btnSet" value="Set Value (Click without clicking on DropDown" />
<br/><br/>
<select id="products"></select>
$(document).ready(function () {
$("#products").kendoDropDownList({
dataTextField: "ProductName",
dataValueField: "ProductID",
autoBind: false,
dataSource: {
transport: {
read: {
dataType: "jsonp",
url: "http://demos.kendoui.com/service/Products",
}
}
}
});
var combobox = $("#products").data("kendoDropDownList"),
setValue = function (e) {
if (e.type != "keypress" || kendo.keys.ENTER == e.keyCode)
combobox.value(3);
};
$("#btnSet").click(setValue);
});
感谢,Riz