使用Kendo ComboBox的大数据

时间:2013-11-21 11:00:43

标签: combobox kendo-ui datasource

我想将一个大数据列入一个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是文本。

有一个最大计数项?

谢谢你,抱歉我的英语不好。

2 个答案:

答案 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 ...

这将解决您的问题