Duke punuar me TreeNodeBinding në Kontrollin Treeview ASP.NET

Unë kam qenë duke punuar në atë që unë shpresoj se do të jetë një lirua shpejt- CodePlex Projekti që ofron një grimë bukur integruar të pjesëve web folur me njëri-tjetrin nëpërmjet ofruesve / konsumator lidhjet për qëllim të eksploruar një vend SharePoint nën mbulon.  (Kjo sigurisht ka qenë bërë më parë, por ky është një projekt mësuar sa më shumë si çdo gjë tjetër).  Kjo është menduar të jetë një zëvendësim për Windows Explorer pamje e SharePoint 2010 bibliotekat dokument.

Kodi ka telefonatën e zakonshme gjithkund rekursive poshtë të SPWeb dhe SPLists nga një pikë e caktuar e fillimit.  Objekt që bën të gjithë traversing që ndërton një string XML që duket diçka si kjo:

<url = sitecollection’http://demo2010a:9090′>
 
<web
     title = 'Hello World sandbox' 
     Template = 'Një faqe për ekipet të shpejt të organizojnë, autor, dhe të ndajnë informacionin, Blah blah blah '>

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

     <listë
        'BCC_Notifications' title = 
        Template = 'CustomList' 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
     </listë>

  </web>

</sitecollection>

Unë pres për të pastruar atë XML para të gjitha është thënë dhe bërë.

Unë dua që përfundimisht të marrë këtë informacion dhe deri në një kontroll TreeView.  Jo tamam sende tokë shkatërrimtar.

Sfida e mora këtu ishte për të lidhur pamje pemë në një XML kontrollin e të dhënave burimore në vend të manualisht ndërtimin treenodes e mia si unë kaloj nëpër pemë.  Unë e bëri këtë pjesërisht për shkak se unë jam duke e bërë qëllimisht gjërat më të vështira mbi veten (ky është një projekt mësimin pas të gjithë) dhe pjesërisht për shkak se unë kam këtë nocion të turbullt se ndërtimi deri nyjet pemë si unë kaloj nëpër pemë nuk është një ide e mirë për afat të gjatë.

Problemi me këtë qasje është se kontrolli Treeview nuk e dinë në lidhje me atributet e mirë në nyjet interesante si "listë" apo "web", kështu që ajo tregon kete dalje nga default:

 

image

Kjo nuk është e dobishme.  Kjo është ajo ku klasa TreeNodeBinding ndihmon.  Unë mund të përdorni këtë për të treguar kontrollin Treeview se si ajo duhet interpretuar XML.  Ja një shembull:

TNB = new TreeNodeBinding();
tnb.DataMember = "list"; // Kjo është etiketë në XML për një faqe.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";

Ky detyrueshme tregon Treeview se kur ajo gjen një <listë> Nyja në XML, aplikojnë për lidhjet TargetField, ValueField dhe ToolTipField.  Në maj app, Harta këto si vijon:

  • TargetField: Kur dikush klikimeve në një vlerë nyjen, kjo është ajo që ju do të merrni për SelectedNode.Value.  Kjo nuk duhet të ngatërrohet me ...
  • ValueField: Kjo është ajo që ju doni Treeview për të shfaqur për përdoruesit.
  • ToolTipField: Vlera nga XML që ju doni, si një Tooltip.

Shtoje që TreeNodebinding për DataBindings paraqitjes së degëzuar dhe që ju të merrni dalje si kjo:

 

image

Unë do të keni më shumë për të gjithë këtë si unë të vazhdojë në projekt dhe përfundimisht të vënë këtë deri në CodePlex.

</fund>

Abonohen në blogun tim.

Atëherë ejani pas meje në Twitter në http://www.twitter.com/pagalvin

3 mendime mbi "Duke punuar me TreeNodeBinding në Kontrollin Treeview ASP.NET

  1. Pingback: Tweets that mention Working With TreeNodeBinding in the ASP.NET Treeview Control « Paul Galvin's SharePoint Space -- Topsy.com

  2. Holger

    Hi Pali,

    I just checked that myself. It worked as far as you described that even if I don’t get that information from your site (what a pity :-)).
    The point I am interested in is, I tried to make the structure lazy loading with the PopulateOnDemand property. Otherwise the treeview load the complete structure in a whole which I would like to avoid. This property PopulateOnDemand seems not to have any effect.

    Also the treeview does not save any expand/ collapse state information.

    Did you solve these issues?

    Të fala

    Holger

    1. Paul Galvin autori Post

      I know you posted this comment a long time ago. Sorry for never responding. I assume that you got your solution long since :).

Lini një Përgjigju

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar *