我想将一个大数据列入一个Kendo ComboBox(10k到60k之间)。
数据集保存在Javascript数组中以缩短加载时间。
我的问题是浏览器冻结了。 它适用于6k项目,但速度很慢。 它适用于数据很少的情况。
以下是代码:
var $input = $('<input class="criterion-value-input"/>');
var kendoParams = {
dataSource: dataSource,
dataTextField: 't',
dataValueField: 'v',
autoBind: true,
filter: 'contains',
placeholder: 'Valeur...',
suggest: false,
select: function(e) {
that._dataItem = this.dataItem(e.item.index());
}
};
$input.kendoComboBox(kendoParams);
数据源如下所示:
0: Object
t: "[7773077397] SAACY SUR MARNE (SAACY SUR MARNE)"
v: "7773077397"
1: Object
t: "[6742067421] SAALES (SAALES)"
v: "6742067421"
2: Object
t: "[7673076549] SAANE ST JUST (SAANE ST JUST)"
v: "7673076549"
3: Object
t: "[6739067422] SAASENHEIM (SAASENHEIM)"
v: "6739067422"
[...]
60000: Object
t: "[1234512345] ZZZZZ (ZZZZZ)"
v: "1234512345"
v是值,t是文本。
有一个最大计数项?
谢谢你,抱歉我的英语不好。
答案 0 :(得分:1)
不,没有这样的限制只是内存和CPU的问题。 ComboBox中的每个元素都被转换为需要渲染的HTML代码片段(尽管没有显示)。所以我想说60000是一种管理大量HTML(DOM)节点的方法。
您考虑使用server side filtering吗?
答案 1 :(得分:0)
在dataSource中添加以下行:
PageSize:10
20也可能是一个很好的PageSize值。但是,请确保使用小于100的PageSize,因为Kendo最多可以快速渲染100个项目。
在comboBox HTML中写
filer:contains ...
这将解决您的问题