Stworzyłem kontrolę drzewa przy użyciu drzewa TreeView.it kendo ma więcej niż 10 000 węzłów i użyłem false false przy tworzeniu drzewa. Udostępniam funkcję rozwijania drzewa według jego poziomu, dla tego stworzyłem metodę, która przyjmuje parametr "poziom" jako liczbę i rozwija go odpowiednio, a użytkownik może wprowadzić 15 (maksymalny poziom) do metody, działa dobrze z 500 do 600 węzłów dla wszystkich poziomów, ale gdy drzewo ma więcej niż 5000 węzłów, niż gdy użytkownik próbuje rozwinąć węzły powyżej poziomu 2, przeglądarka zawiesza się i pokazuje błąd braku odpowiedzi.Kendo Treeview Rozszerzanie dużego drzewa wydania
Metoda którą stworzyliśmy, aby rozwinąć drzewo jest: - powyżej
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();
}
}
wezwanie danej metody tak: -
ExapandByLevel(15);
tutaj 15 jest poziom, aby rozwinąć w drzewie.
gdy drzewo ma więcej niż 5000 węzłów niż w przypadku, gdy użytkownik próbuje rozwinąć węzły powyżej poziomu 2, przeglądarka zawiesza się i pokazuje błąd braku odpowiedzi. proszę zasugerować jakikolwiek sposób to zrobić, co chcę, to rozwinąć drzewo, które może zawierać ponad 5000 węzłów.
dzięki za próby, będzie to powodować powolne, ponieważ mój wniosek, jeżeli istnieje 10000 rekordy następnie będzie go serwer dla każdego węzła, a także sprawiają, że serwer powoli .. a drugi punkt jest już załatwione podczas tworzenia widoku drzewa jak DS var = nowy kendo.data.HierarchicalDataSource ({ dane:: dane, schemat { wzór: { id: 'treeId' hasChildren: funkcję (e) { powrotu e.items.length> 0 ; }, dzieci: "przedmioty" } } }); więc nie będzie help..thanks –
zobaczyć ten przykład Dodałem wszystkie dzieciaki na drugim poziomie i jestem po prostu klikając na przycisk rozwijania nadal wisi: http: //jsfiddle.net/GHdwR/134/ –
@DevendraSoni : Rzeczywistym problemem jest generowanie elementów HTML. Możesz zobaczyć, że w twoim przykładzie, jeśli ustawisz 'loadOnDemand: false', przed rozwinięciem spróbujesz wygenerować wszystkie elementy HTML i zawiesza się przeglądarka. ale jeśli ustawiono 'loadOnDemand: true', to nie generuje HTML przed rozwinięciem węzła, jest to pewnego rodzaju leniwy ładunek. Tak więc, w przykładzie po stronie serwera, zadanie generowania elementów html jest rozproszone przez wiele wątków i nie zawiesza się (Wydaje mi się, że to jest powód). – Ashkan