Lavorando con TreeNodeBinding in ASP.Controllo Treeview NET

Ho lavorato su ciò che spero sarà un presto-released CodePlex progetto che prevede un po' bello integrato di web part a parlare tra di loro tramite connessioni/consumer del provider al fine di esplorare un sito di SharePoint sotto le coperte.  (Certamente questo è stato fatto prima, ma questo è un progetto di apprendimento come qualsiasi altra cosa).  Questo è lo scopo di essere un sostituto per la visualizzazione di Esplora risorse di windows di SharePoint 2010 raccolte documenti.

Il codice ha la solita ricorsiva chiamare verso il basso della SPWeb e SPList da una determinata a partire dal punto.  L'oggetto che fa questo attraversamento si accumula una stringa XML che sembra qualcosa di simile:

<SiteCollection url =’http://demo2010a:9090′>
 
<Web
     titolo = 'Ciao mondo Sandbox' 
     Modello =' un sito per squadre per organizzare rapidamente, autore, e condividere informazioni, BLA BLA BLA '>

     <elenco
        titolo ='BCC_Health_Services_FAQs’
        Modello ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</elenco>

     <elenco
        titolo = 'BCC_Notifications' 
        Modello = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </elenco>

  </Web>

</SiteCollection>

Mi aspetto di pulire up che XML prima di tutto è detto e fatto.

I want to get in definitiva che le informazioni su e in un controllo Treeview.  Non è esattamente la terra sconvolgente roba.

La sfida che ho preso qui era quello di collegare la visualizzazione struttura a un controllo origine dati XML anziché costruire manualmente il mio treenodes come attraversano la struttura ad albero.  Fatto questo, in parte perché deliberatamente sto facendo le cose più difficili su me stesso (Questo è un progetto di apprendimento, dopo tutto) e in parte perché ho questa vaga nozione che costruendo i nodi della struttura come attraversare l'albero non è una buona idea per il lungo termine.

Il problema di questo approccio è che il controllo Treeview non sa sugli attributi buoni sui nodi interessanti come "lista" o "web" così mostra questa uscita per impostazione predefinita:

 

image

Questo non è utile.  Questo è dove la classe TreeNodeBinding aiuta.  Posso usare questo per raccontare il controllo Treeview come deve interpretare il codice XML.  Ecco un esempio:

TNB = nuovo TreeNodeBinding();
tnb.DataMember = "lista"; // Questo è l'etichetta nel codice xml per un sito.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";

Questa associazione dice treeview che quando rileva un <elenco> nodo XML, applicare le associazioni per TargetField, ValueField e ToolTipField.  Nel maggio app, Queste mappa come segue:

  • TargetField: Quando qualcuno clicca sul valore del nodo, Questo è ciò che si otterrà per SelectedNode.Value.  Questo non deve essere confuso con...
  • ValueField: Questo è ciò che volete Treeview per visualizzare all'utente.
  • ToolTipField: Il valore dal XML che si desidera come descrizione comandi.

Aggiungere che TreeNodebinding DataBindings della visualizzazione struttura ad albero e voi ottenere output simile a questo:

 

image

Avrò più su tutto questo come continuare sul progetto e alla fine mettere questa su Codeplex.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

3 pensieri su "Lavorando con TreeNodeBinding in ASP.Controllo Treeview NET

  1. Pingback: Tweets che parlare lavorando con TreeNodeBinding nel controllo Treeview ASP.NET «di Paul Galvin SharePoint spazio -- Topsy.com

  2. Holger

    Ciao Paolo,

    Ho appena controllato che me stesso. Ha funzionato per quanto hai descritto che anche se non capisco che le informazioni dal tuo sito (Che peccato :-)).
    Il punto che mi interessa è, Ho provato a fare la struttura di caricamento con la proprietà PopulateOnDemand lazy. In caso contrario il controllo treeview caricare la struttura completa in un tutto che mi piacerebbe evitare. Questa proprietà che PopulateOnDemand non sembra avere alcun effetto.

    Anche il controllo treeview non salvare qualsiasi Espandi / Comprimi informazioni sullo stato.

    Hai risolto questi problemi?

    Per quanto riguarda

    Holger

    Risposta
    1. Paul Galvin Messaggio autore

      So che hai postato questo commento molto tempo fa. Ci scusiamo per non rispondere mai. Presumo che hai la soluzione da tempo :).

      Risposta

Lasciare una risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *