Eu estiven a traballar no que eu espero que sexa a editado en breve CodePlex proxecto que ofrece un pouco agradable integrado de pezas web falar uns cos outros a través de conexións do provedor / consumidor coa finalidade de explotar un sitio SharePoint debaixo das cubertas. (Este foi certamente facer antes, pero este é un proxecto de aprendizaxe, tanto como calquera outra cousa). Este pretende ser un substituto para Windows Explorer vista do SharePoint 2010 bibliotecas de documentos.
O código ten a chamada recursiva habitual debaixo da SPWeb de e SPLists partir dun determinado punto de partida. O obxecto que fai todo isto travesía constrúe unha cadea XML que é algo así:
<sitecollection url =’http://demo2010a:9090′>
<tea
title = 'Ola Mundo Sandbox'
Template = 'O lugar para os equipos para organizar rapidamente, autor, e compartir información, Bla bla bla '><lista
title = 'BCC_Health_Services_FAQs’
Template = 'CustomList’
ListId =’http://demo2010a:9090/helloworldsandbox[acción]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
</lista><lista
title = 'BCC_Notifications'
Template = 'CustomList'
ListId =’http://demo2010a:9090/helloworldsandbox[acción]5a5a13d1-877c-41c0-9063-b9612be80d5e’>
</lista></tea>
</sitecollection>
Espero que limpar XML ante todo está dito e feito.
Quero chegar, finalmente, que a información anterior e nun control TreeView. Non é exactamente a terra tremer cousas.
O reto que asumir aquí era para chamar a visualización de árbore para un control de fonte de datos XML en vez de construír manualmente os meus TreeNodes como percorrer a árbore. Eu fixen iso en parte porque estou deliberadamente facer as cousas máis difíciles en min (este é un proxecto de aprendizaxe despois de todo) e en parte porque eu teño esa vaga noción de que a construción de nós de árbore que percorrer a árbore non é unha boa idea a longo prazo.
O problema con esta visión é que o control Treeview non sabe sobre os bos atributos en nós interesantes como "lista" ou "web" para que mostre esa saída por defecto:
Isto non é útil. Este é o lugar onde a clase TreeNodeBinding axuda. Podo usar isto para dicir o control Treeview como debe interpretar o XML. Aquí está un exemplo:
TNB = new TreeNodeBinding();
tnb.DataMember = "list"; // Esta é a etiqueta en XML para un sitio.
tnb.TargetField = "listid";
tnb.ValueField = "title";
tnb.ToolTipField = "Template";
Esta conexión di o treeview que cando se atopa unha <lista> nó no XML, aplicaranse as conexións para TargetField, ValueField e ToolTipField. En maio de aplicación, estes mapa do seguinte xeito:
- TargetField: Cando alguén fai clic nun valor do nodo, iso é o que vai ter para SelectedNode.Value. Isto non debe ser confundido co ...
- ValueField: Isto é o que quere que o Treeview para mostrar ao usuario.
- ToolTipField: O valor do XML que quere como unha información de ferramenta.
Engadir que TreeNodeBinding para DataBindings da exhibición de árbore e terá unha saída como esta:
Vou ter máis en todo isto como eu continuar no proxecto e, finalmente, poñer isto en Codeplex.
</final>
Siga-me no Twitter http://www.twitter.com/pagalvin
Pingback: Tweets that mention Working With TreeNodeBinding in the ASP.NET Treeview Control « Paul Galvin's SharePoint Space -- Topsy.com
Ola Paulo,
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?
Saúdos
Holger
I know you posted this comment a long time ago. Sorry for never responding. I assume that you got your solution long since :).