Tag Archives: TreeNodeBinding

En collaboration avec TreeNodeBinding dans l'ASP.NET Treeview contrôle

J'ai travaillé sur ce que j'espère sera un peu libérés CodePlex projet qui fournit un peu intégré nice de WebPart parler les uns aux autres via des connexions fournisseur et consommateur dans le but de l'exploration d'un site SharePoint sous les couvertures.  (Cela a certainement été fait avant, mais il s'agit d'un projet d'apprentissage autant qu'autre chose).  Le but est d'être un remplacement pour la vue Explorateur de windows de SharePoint 2010 bibliothèques de documents.

Le code a l'habituel récursive appel vers le bas de la SPWeb et SPLists d'une donnée à partir de point.  L'objet qui effectue cette traversée crée une chaîne XML qui ressemble à ceci:

<sitecollection url =’http://demo2010a:9090′>
 
<Web
     titre = 'Hello World Sandbox' 
     Modèle =' un site pour les équipes d'organiser rapidement, auteur, et partager de l'information, BLAH BLAH BLAH »>

     <Liste
        titre ='BCC_Health_Services_FAQs’
        Modèle ='CustomList’
       
ListID =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</Liste>

     <Liste
        titre = « BCC_Notifications » 
        Modèle = « CustomList » 
        ListID =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1-877 c-41 c 0-9063-b9612be80d5e’>
     </Liste>

  </Web>

</sitecollection>

Je m'attends à nettoyer que XML avant tout est dit et fait.

Je veux rentrer en fin de compte que l'information up et dans un contrôle Treeview.  Pas exactement la terre stuff bouleversante.

Le défi que j'ai pris ici est de connecter l'arborescence d'un contrôle de Source de données XML plutôt que de construire manuellement mon TreeView comme je traverse l'arbre.  Je l'ai fait en partie parce que je me fais délibérément choses plus fort sur moi-même (Ce n'est après tout un projet d'apprentissage) et en partie parce que j'ai cette notion vague qui construire des nœuds d'arbre que je traverse l'arbre n'est pas une bonne idée à long terme.

Le problème avec cette approche est que le contrôle Treeview ne sait pas les bons attributs sur les nœuds intéressants comme « liste » ou « web » donc elle montre cette sortie par défaut:

 

image

Ce n'est pas utile.  C'est où la classe TreeNodeBinding aide.  Je peux utiliser cela pour raconter le contrôle Treeview comment il doit interpréter le code XML.  Voici un exemple:

TNB = nouveau TreeNodeBinding();
TNB.DataMember = « liste »; // Il s'agit de l'étiquette dans le code xml d'un site.
TNB.TargetField = « listid »;
TNB.ValueField = « title »;
TNB.ToolTipField = « Template »;

Cette liaison raconte le treeview que lorsqu'il trouve une <Liste> nœud XML, appliquer les liaisons pour TargetField, ValueField et ToolTipField.  En mai app, Ces cartes comme suit:

  • TargetField: Lorsque quelqu'un clique sur une valeur de nœud, C'est ce que vous obtiendrez pour SelectedNode.Value.  Cela ne veut ne pas être confus avec…
  • ValueField: C'est ce que vous voulez le contrôle Treeview pour afficher à l'utilisateur.
  • ToolTipField: La valeur par le XML que vous souhaitez comme une info-bulle.

Ajouter que TreeNodebinding pour les liaisons de données de l'arborescence et vous obtenez sortie comme ceci:

 

image

J'aurai plus sur tout ce que je continue sur le projet et finalement mettons cela sur Codeplex.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin