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>
Rexístrate para o meu blog.
Siga-me no Twitter http://www.twitter.com/pagalvin