Ho creato un controllo albero utilizzando kendo TreeView.it ha più di 10.000 nodi e ho usato loadOnDemand false durante la creazione di Tree. Sto fornendo una funzionalità per espandere l'albero per il suo livello, per questo ho creato un metodo che prende il parametro "livello" come numero ed espanderlo di conseguenza e l'utente può inserire 15 (livello massimo) nel metodo, funziona bene con da 500 a 600 nodi per tutti i livelli, ma quando l'albero ha più di 5000 nodi rispetto a se l'utente sta tentando di espandersi oltre i nodi di 2 ° livello, il browser si blocca e mostra errori di risposta.Kendo Treeview Espansione del grande albero problema
metodo che ho creato per espandere la struttura è: -
function ExapandByLevel(level, currentLevel) {
if (!currentLevel) {
currentLevel = 0;
}
if (level != currentLevel) {
var collapsedItems = $("#treeView").find(".k-plus:visible");
if (collapsedItems.length > 0) {
setTimeout(function() {
currentLevel++;
var $tree = $("#treeView");
var treeView = $tree.data("kendoTreeView");
var collapsedItemsLength = collapsedItems.length;
for (var i = 0; i < collapsedItemsLength; i++) {
treeView.expand($(collapsedItems[i]).closest(".k-item"));
}
ExapandByLevel(level, currentLevel);
}, 100);
}
else {
//console.timeEnd("ExapandByLevel");
hideLoading();
}
}
if (level == currentLevel) {
hideLoading();
}
}
chiamata metodo sopra dato risultati simili: -
ExapandByLevel(15);
qui 15 è il livello di espandersi in albero.
quando l'albero ha più di 5000 nodi rispetto a se l'utente sta tentando di espandersi sopra i nodi di 2 ° livello, quindi il browser si blocca e mostra errori di risposta. per favore suggerisci un modo per farlo, quello che voglio è espandere l'albero che può contenere più di 5000 nodi.
grazie per provare, questo creerà la mia applicazione lenta perché se ci sono 10000 record allora andrà il server per ogni nodo e renderà anche il server lento .. e il secondo punto è già preso cura di quando si crea una vista ad albero come questo: var ds = new kendo.data.HierarchicalDataSource ({ di dati: i dati, schema: { modello: { id: 'treeId', hasChildren: function (e) { ritorno e.items.length> 0 ; }, bambini: "articoli" } } }); quindi questo non è di aiuto ... grazie –
vedere questo esempio ho aggiunto tutti i childs al secondo livello e sto semplicemente cliccando sul bottone expand ancora si blocca: http: //jsfiddle.net/GHdwR/134/ –
@DevendraSoni : Il vero problema sta generando gli elementi HTML. Puoi vederlo nel tuo esempio se imposti 'loadOnDemand: false', prima di espandersi cerca di generare tutti gli elementi HTML e il blocco del browser. ma se impostato 'loadOnDemand: true', non genera HTML prima di espandere un nodo, è una sorta di caricamento pigro. Quindi nell'esempio lato server, l'attività di generazione di elementi html è dispersa in più thread e non si blocca (mi sembra che questo sia il motivo). – Ashkan