Laden...

Treeview mit mehreren tausend einträgen zu langsam

Erstellt von Tam0r vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.162 Views
T
Tam0r Themenstarter:in
137 Beiträge seit 2008
vor 13 Jahren
Treeview mit mehreren tausend einträgen zu langsam

Ich stehe vor einem Performance problem. Ich bin dabei in asp.net mit ajax ein treeview anzuzeigen das sich aus mehreren tausend artikel zusammen setzt. Beim klick auf einen Button habe habe ich das treeview befüllt. Mit Wenigen einträgen ging dies super. Mit mehreren tausend einträgen dauert das Laden leider sehr sehr lange. 20000 tausen childnodes sind auch viel.

Ich habe mir überlegt immer nur den Knoten zu laden der gerade gebraucht wird. Allerdings ist dann das Problem das wenn viele Knoten nachgeleaden wurden (also beim klick auf dies und jenes) es sehr lange dauert bis das treeview auf Selectindexchange reagiert. Da ja nun wieder mehrere hundert/tausend einträge per postpack zürück an Server und vom server wieder zürück gesand wird.

Mit einem Updatepanel habe ich dies auch probiert gleiches ergebnis. Hat jemand eine Idee wie ich dies elegant lösen könnte ?

VS2008 .net 3.5 Sp1
SQL Server 2005

1.130 Beiträge seit 2007
vor 13 Jahren

Im hintergrund die nächste Ebene nachladen?

Also erst nur die laden die angezeigt werden und dann mit geringerer priorität im hintergrund die knoten eine ebene tiefer nachladen, die nicht angezeigt werden?

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

T
Tam0r Themenstarter:in
137 Beiträge seit 2008
vor 13 Jahren

Naja das ist ja im grunde was ich gemeint habe mit

Ich habe mir überlegt immer nur den Knoten zu laden der gerade gebraucht wird.

Wobei ich halt immer auf klick nachgeladen hätte. Wie ist es denn möglich bei einer Webseite im Hintergrund zu laden ?

Das ändert aber nichts an dem Problem das beim Postback die ganzen Einträge mit übermittelt werden und somit das reagieren auf den klick sehr lange dauert...

1.130 Beiträge seit 2007
vor 13 Jahren

Wie ist es denn möglich bei einer Webseite im Hintergrund zu laden ?

Ajax! Ich weiß twar nicht inwieweit asp.net dies automatisch verwendet, aber wenn man das javascript selber schreibt ist es keinerlei problem.

Das ändert aber nichts an dem Problem das beim Postback die ganzen Einträge mit übermittelt werden und somit das reagieren auf den klick sehr lange dauert...

Standard-postbacks lassen sich mit etwas trixerei umgehen (post lässt sich auch mit einem iframe oder einem xmlhttprequest machen).

Das ist beides wohl nicht das standardverfahren und deshalb etwas aufwändiger, aber ich bin mir sicher, es sit machbar.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

T
Tam0r Themenstarter:in
137 Beiträge seit 2008
vor 13 Jahren

Ich habe nun das Problem teilweise gelöst.

Ich lade nun wie gesagt nur beim expandieren des Knotens alle Elemente rein. und beim Zumachen entlade ich wieder alle elemente.