Domanda

Sono in una situazione in cui devo visualizzare un albero. Tuttavia, alcuni dei nodi hanno 35000 nodi figlio (figli diretti!). Questo ovviamente è un modo per rallentare in termini di usabilità.

Preferirei vedere che l'albero carica solo quei nodi che sono visibili nella vista del browser.

Tali alberi esistono per WinForms e C ++, qualcuno di voi sa se tale albero esiste per ASP.NET?

Attualmente stiamo utilizzando il Telerik Treeview , che è un bel controllo, ma non supporta la situazione descritta.

domande extra

Da un punto di vista dell'usabilità: come gestisci tali alberi. Visualizzare 35000 nodi su un livello è bello, ma come trovi qualcosa in quell'albero? Usi il paging in un albero? o una casella di ricerca? o forse aggiungere livelli extra?

È stato utile?

Soluzione

Con così tanti nodi, anche se riesci a trovare un modo performante per visualizzarli, probabilmente non sarà molto utilizzabile dai tuoi utenti. Immagina di provare a scorrere 35.000 nodi solo per trovare il nodo che ti interessa! Lo stesso vale per il paging. Un utente sta davvero andando a pagina 3500 pagine (assumendo una dimensione della pagina di 10) per trovare il suo obiettivo? Probabilmente no, e se lo fanno, probabilmente non saranno troppo felici. :)

Invece, con set di dati di grandi dimensioni come questo, trovo che di solito sia meglio fornire un tipo di " Filtro " UI. Qualcosa che consente all'utente di & Quot; forma & Quot; i dati disponibili in una raccolta più gestibile.

Non sono sicuro di quale capacità hai di fornire il filtro (ovvero su quali campi potresti filtrare), ma penso che sia la soluzione migliore. Le opzioni per l'interfaccia utente sono:

  1. Qualcosa come RadGrid per ASP.NET AJAX che può fornire un'interfaccia utente di filtro integrata che consente agli utenti di trovare rapidamente i valori a cui sono interessati.
  2. Utilizzando l'API lato client di RadTreeView e il supporto per il caricamento di nodi su richiesta, è possibile creare una casella di testo che filtra i nodi nella struttura mentre l'utente digita. Dovresti semplicemente gestire l'evento onkeyup di TextBox e quindi inviare una richiesta a un servizio Web per afferrare i nodi che soddisfano i criteri di filtro e sostituire la raccolta di nodi di TreeView con il risultato. Ciò renderà molto più facile per i tuoi utenti trovare il loro nodo di destinazione.

Chiaramente ci sono anche altri approcci, ma spero che questo ti dia alcune idee.

Risposta breve: per set di dati di grandi dimensioni, utilizzerei una combinazione di filtri in tempo reale e servizi Web per presentare un set di risultati più gestibile ai miei utenti. Per il caricamento iniziale, caricarei solo i primi (diciamo) 200 nodi per mantenere alte le prestazioni.

Spero che questo aiuti! -Todd

Altri suggerimenti

So che ci sono alcuni controlli ad albero basati su jQuery. Non conosco i nomi fuori mano. Il controllo dell'albero ASP.NET sicuramente non supporta questo in quanto non è AJAXifiable. Per la visualizzazione del problema con i 35000 nodi, li farei in questo modo.

node
|
-- Sub Node 1
|
-- ...
|
-- Sub Node n
|
-- more...

Quando passi con il mouse su di più o fai clic su di esso, otterrai più nodi. Se visualizzi 100 sottonodi, caricerei 200 e nasconderei gli altri 100. In questo modo, quando passi con il mouse su di più, questo appare istantaneo. E ogni volta che passi con il mouse su più ... vengono caricati i successivi 100 nascosti.

Inoltre, al giorno d'oggi non è così difficile creare controlli albero personalizzati con tutti i browser di livello superiore, utilizzare <ul> e <li> nidificati per creare nodi e sottonodi e quindi applicare lo stile appropriato. <=> può contenere collegamenti se desideri rendere più semplice l'intero clic.

I miei due centesimi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top