@@ -114,6 +114,19 @@ public override BaseNode ExpandNode(BaseNode node, bool doIfLoaded = false)
114114 }
115115 }
116116
117+ if ( node is FieldContainerNode )
118+ {
119+ if ( ! doIfLoaded )
120+ {
121+ if ( node . Children != null && node . Children . Contains ( node ) )
122+ {
123+ node . Children . Remove ( node ) ;
124+ }
125+
126+ DoFields ( ( List < Field > ) node . SPObject , node , node . RootNode ) ;
127+ }
128+ }
129+
117130 return node ;
118131 }
119132
@@ -304,7 +317,7 @@ private BaseNode DoSPFolder(Microsoft.SharePoint.Client.Folder folder, BaseNode
304317
305318 private BaseNode DoSPList ( Microsoft . SharePoint . Client . List list , BaseNode parentNode , BaseNode rootNode )
306319 {
307- list . EnsureProperties ( l => l . RootFolder , l => l . BaseType , l => l . ContentTypes ) ;
320+ list . EnsureProperties ( l => l . RootFolder , l => l . BaseType , l => l . ContentTypes , l => l . Fields ) ;
308321
309322 ListNode listNode = parentNode as ListNode ;
310323
@@ -316,6 +329,13 @@ private BaseNode DoSPList(Microsoft.SharePoint.Client.List list, BaseNode parent
316329 listContentTypeContainerNode . RootNode = rootNode ;
317330 listContentTypeContainerNode . NodeConnector = this ;
318331
332+ // Add Field Container node
333+ BaseNode fieldContainerNode = new FieldContainerNode ( list . Fields ) ;
334+ listNode . Children . Add ( fieldContainerNode ) ;
335+ fieldContainerNode . ParentNode = listNode ;
336+ fieldContainerNode . RootNode = rootNode ;
337+ fieldContainerNode . NodeConnector = this ;
338+
319339 // Add immediate children of the root folder
320340 BaseNode rootFolder = this . DoSPFolder ( list . RootFolder , listNode , rootNode , true ) ;
321341 foreach ( var subFolder in rootFolder . Children )
@@ -367,6 +387,13 @@ private BaseNode DoSPWeb(Web web, BaseNode parentNode, BaseNode rootNode)
367387 contentTypeContainerNode . RootNode = rootNode ;
368388 contentTypeContainerNode . NodeConnector = this ;
369389
390+ // Add Field Container node
391+ BaseNode fieldContainerNode = new FieldContainerNode ( web . Fields ) ;
392+ myNode . Children . Add ( fieldContainerNode ) ;
393+ fieldContainerNode . ParentNode = myNode ;
394+ fieldContainerNode . RootNode = rootNode ;
395+ fieldContainerNode . NodeConnector = this ;
396+
370397 foreach ( Microsoft . SharePoint . Client . List list in web . Lists )
371398 {
372399 BaseNode myListNode = new ListNode ( list ) ;
@@ -404,6 +431,26 @@ private void DoContentTypes(ContentTypeCollection contentTypes, BaseNode parentN
404431 }
405432 }
406433
434+ private void DoFields ( List < Field > fields , BaseNode parentNode , BaseNode rootNode )
435+ {
436+ try
437+ {
438+ foreach ( var contentType in fields . OrderBy ( c => c . InternalName ) )
439+ {
440+ FieldNode fieldNode = new FieldNode ( contentType ) ;
441+
442+ parentNode . Children . Add ( fieldNode ) ;
443+ fieldNode . ParentNode = parentNode ;
444+ fieldNode . RootNode = rootNode ;
445+ fieldNode . NodeConnector = this ;
446+ }
447+ }
448+ catch ( Exception ex )
449+ {
450+ // log
451+ }
452+ }
453+
407454 private void DoTenant ( Tenant tenant , BaseNode tenantNode , BaseNode rootNode )
408455 {
409456 try
0 commit comments