olragon
olragon

Reputation: 91

How can I optimize datasource for Kendo UI Combobox with 5000 items?

In my test -> http://jsfiddle.net/olragon/642c4/12/, KendoUI Combobox cannot run with 5000 items, how can I make it work without calling severside data source or this is limit of KendoUI?

HTML

<h3>T-shirt Fabric</h3>
<input id="fabric" placeholder="Select fabric..." />

JS

/**
 * Returns a random integer between min and max
 * Using Math.round() will give you a non-uniform distribution!
 */
function getRandomInt (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

$(document).ready(function() {
    var superData = []
    ,   data = [
            { text: "Cotton", value: "1" },
            { text: "Polyester", value: "2" },
            { text: "Cotton/Polyester", value: "3" },
            { text: "Rib Knit", value: "4" }
        ];

    for(var _i=0; _i<5000; _i++) {
        var randomEntry = data[getRandomInt(0,data.length-1)];
        randomEntry.text += '-' + _i;
        randomEntry.value += _i;
        superData.push(randomEntry);
    }

    // create ComboBox from input HTML element
    $("#fabric").kendoComboBox({
        dataTextField: "text",
        dataValueField: "value",
        dataSource: superData,
        filter: "contains",
        suggest: true,
        index: 3
    });
});

Update

Upvotes: 1

Views: 1591

Answers (1)

OnaBai
OnaBai

Reputation: 40887

The problem is not in Kendo UI ComboBox but in your loop. Did you check what it does (not what you want it to do)? I would say that there is an error since data[getRandomInt(0,data.length-1)] does not return a new element but a reference so you are appending "_i" to the same 5 elements many times building up a very long string.

Try this instead:

for (var _i = 0; _i < 5000; _i++) {
    var randomEntry = data[getRandomInt(0, data.length - 1)];
    var newEntry = {
        text: randomEntry.text + '-' + _i,
        value            : randomEntry.value += _i
    };
    superData.push(newEntry);
}

Check the modified version of the Fiddle here: http://jsfiddle.net/OnaBai/642c4/14/

Upvotes: 3

Related Questions