Arbeide med TreeNodeBinding i ASP.NET Treeview-kontrollen

Jeg har jobbet på det jeg håper vil bli en snart utgitt CodePlex prosjekt som gir en fin integrert bit av webdeler som snakker til hverandre via leverandør/forbruker tilkoblinger for å utforske et SharePoint-område under dynen.  (Dette er sikkert gjort før, men dette er en læring prosjekt så mye som noe annet).  Dette er ment å være en erstatning for windows Utforsker-visningen av SharePoint 2010 dokumentbiblioteker.

Koden er vanlige rekursiv påkalte Spwebs og SPLists fra en gitt start punkt.  Objektet som gjør at traversering bygger opp en XML-streng som ser omtrent slik ut:

<SiteCollection url =’http://demo2010a:9090′>
 
<Web
     Tittel = "Hei verden sandkasse" 
     Mal = "et område hvor grupper raskt organisere, Forfatter, og dele informasjon, BLAH BLAH BLAH'>

     <liste
        Tittel ='BCC_Health_Services_FAQs’
        Mal ='CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</liste>

     <liste
        Tittel = 'BCC_Notifications' 
        Mal = 'CustomList' 
        ListId =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </liste>

  </Web>

</SiteCollection>

Jeg forventer å rydde opp som XML før alt er sagt og gjort.

Jeg ønsker å få den informasjonen til slutt opp og inn i en Treeview-kontrollen.  Ikke akkurat jord knuste ting.

Utfordringen jeg tok på her var å koble trevisningen til en XML-datakilde kontrollen i stedet for manuelt å bygge opp min TreeNode som jeg traversere treet.  Jeg gjorde dette, delvis fordi jeg bevisst gjør ting vanskeligere på meg selv (Dette er et prosjekt for læring tross alt) og delvis fordi jeg har denne vage forestillingen om at bygge opp trenoder som jeg traversere treet er ikke lurt på lang sikt.

Problemet med denne tilnærmingen er at Treeview-kontrollen ikke vet om god attributtene på interessante nodene som "list" eller "web", slik at den viser dette output som standard:

 

image

Det er ikke nyttig.  Dette er hvor TreeNodeBinding klassen hjelper.  Jeg kan bruke dette til å fortelle Treeview-kontrollen hvordan det skal tolke XML.  Her er et eksempel:

tnb = nye TreeNodeBinding();
tnb.DataMember = "liste"; // Dette er etiketten i xml for et område.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Mal";

Denne bindingen forteller treeview at når den finner en <liste> noden i XML, bruke bindinger for TargetField, ValueField og ToolTipField.  I mai app, Dette kartet som følger:

  • TargetField: Når noen klikker på en nodeverdien, Dette er hva du får for SelectedNode.Value.  Dette er ikke å forveksles med...
  • ValueField: Dette er hva du vil Treeview å vise til brukeren.
  • ToolTipField: Verdien fra XML-filen du vil bruke som et verktøytips.

Legg til at TreeNodebinding i trevisningen databindinger, og du får utgang som dette:

 

image

Jeg vil ha mer på alt dette som jeg fortsette på prosjektet, og til slutt sette dette på Codeplex.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

3 tanker om “Arbeide med TreeNodeBinding i ASP.NET Treeview-kontrollen

  1. Pingback: Tweets som nevner arbeider med TreeNodeBinding i ASP.NET Trevisningskontrollen «Paul Galvin's SharePoint plass -- Topsy.com

  2. Holger

    Hei Paul,

    Jeg sjekket det selv. Det virket som du beskrev det selv om jeg ikke får denne informasjonen fra webområdet (så synd :-)).
    Poenget jeg er interessert i er, Jeg prøvde å gjøre strukturen lat lasting med egenskapen PopulateOnDemand. Ellers treeview laste den komplette strukturen i helhet som jeg ønsker å unngå. Denne egenskapen PopulateOnDemand synes ikke å ha noen effekt.

    Også treeview ikke lagre alle Vis / Skjul informasjon.

    Du did løse disse problemene?

    Hilsen

    Holger

    Svar
    1. Paul Galvin Post forfatter

      Jeg vet du postet denne kommentaren lenge siden. Beklager for aldri å svare. Jeg antar at du fikk din løsning lenge siden :).

      Svar

legg igjen et svar

e-postadressen din vil ikke offentliggjøres. Obligatoriske felt er merket *