I have a doc library which is using a content type. This doclib has subfolders. The subfolders have word / excel documents.
My requirement is two views (both default views)
when you click on the library the folders underneath show up as a list as usual. for that, edit the "All Documents" view and change the folders setting Show this view = In top level folder.
And then I need a different view when any folder is clicked. this view will have a group on one of the column, and in the folders setting under "Show this view:", "In folders of content type: Folder" should be selected, also mark this view as default also.
When I do this manually, it works fine as per Need a different views for Folders & Files in Document Library
So basically the end result that I need is two views as below
Views-----------------Show In----------Default View
when I use code, it is not working.
Below is my code:
SPSite site = properties.Feature.Parent as SPSite; SPWeb web = site.RootWeb; SPDocumentLibrary lib = web.Lists["libraryName"] as SPDocumentLibrary; StringCollection strViewFields = lib.Views["All Documents"].ViewFields.ToStringCollection(); string viewQuery = @" <GroupBy Collapse=""FALSE"" GroupLimit=""100""> <FieldRef Name=""AColumn"" Ascending=""TRUE"" /> </GroupBy>"; var folderView = lib.Views.Add("FolderView", strViewFields, viewQuery, 100, true, false); //folderView.ContentTypeId = new SPContentTypeId("0x0120D5"); //folderView.ContentTypeId = new SPContentTypeId("0x0120"); folderView.ContentTypeId = SPBuiltInContentTypeId.Folder; folderView.DefaultView = true; folderView.Update(); var allDocumentsView = lib.Views["All Documents"]; allDocumentsView.ContentTypeId = new SPContentTypeId("0x012001"); //"In the Top level folder" allDocumentsView.DefaultView = true; allDocumentsView.Update(); lib.Update();
But when I run this code, go to my document library's settings, under Views... I see the All Documents View as default and FolderView is not default and "Show In column" is empty.
The FolderView although it gets created but it does not show as default and does not show the folder setting. When I click on the Folderview and hit OK button without any changes, the folder setting now magically shows up as "Show In" Folder.
Is this a bug in my code? Can any one please help? Basically I am trying to do this in code as per this!
Create the view to show at the root set it as default view
Create the view to show inside folders set it as default view, but also down in the
folders section set Show this view to In folder of content type:
<Your folder content type>
Go back to the root view and change Show this view to In the top-level folder