我使用的模板剑道下拉列表。它加载它用来签名记录的客户名称的列表。客户名单有8K条目。
形式加载好了,但如果我选择下拉列表来改变它需要大约10秒的名单出现在客户端名称。有什么我可以做,以加快这?
我的数据源:
var dsClients = new kendo.data.DataSource({
transport: {
read: {
url: "/data/clients/key",
dataType: "jsonp"
},
parameterMap: function(options, operation) {
if (operation === "read") {
return options;
}
}
},
serverSorting: true,
sort: [{ field: "text", dir: "asc" }]
});
模板中的元素:
<input name="idclt_clm" data-bind="value:idclt_clm" data-value-field="value"
data-text-field="text" data-option-label="Select" data-source="dsClients"
data-role="dropdownlist" required validationMessage="Required" />
有2个选项,我知道的。
@(Html.Kendo()
.DropDownList()
.Name("GridName")
.HtmlAttributes(new { @class = "form-control" })
.DataSource(ds => ds.Read(read =>
read.Action("YourFunction","YourController").Data("filterFunction"))
.ServerFiltering(true))
.MinLength(2)//number of characters for a valid search
.Delay(250)//milliseconds delay to trigger search
.AutoClose(false)
.AutoBind(false)
.IgnoreCase(true)
.DataTextField("Text")
.DataValueField("Value")
.Placeholder("Enter at least 2 letters to search")
.Filter(FilterType.Contains)
)
<script>
function filterFunction() {
return {
text: $("#GridName").data("kendoDropDownList").input.val()
};
}
</script>
如果搜索仍然很慢,你可以改变的字符数
好吧,如果你做什么都?但这可能不是最好的形式给出,但对我来说它的工作。我有一个组合框,从一个级联事件获取其信息,所以它会尝试任何一种方式来填补它。因此,发送到填补服务器端的请求后,我有一个客户端的事件:
.Filter(Contains).MinLength(n).Filtering("Action")
这将让服务器通过Ajax赶上与表/列表与您正试图填补你的CB会话变种。然后过滤所需的项目,并将其发送回给你的CB。