Follow up from my previous article to Add List View WebPart to SharePoint Page, I spent a bit of time figuring out why setting Calendar view to the list view webpart is not working.
My custom list have two views (default list view & calendar view) and I would like to display the Calendar view when added to SharePoint page. After spending sometime trying to figure out, I finally find the solution. Hopefully it save you a lot of time.
Solution
Change XsltListViewWebPart into ListViewWebPart. What the ….
private void AddCalendarViewWebPart(SPFile file, SPList list, string webPartZone, int webPartOrder, Guid viewId) { SPLimitedWebPartManager limitedWebPartManager = file.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); ListViewWebPart wp = null; list.ParentWeb.AllowUnsafeUpdates = true; try { // create an instance of the ListViewWebPart wp = new ListViewWebPart(); // convert the list GUID to a string, must include braces (ToString("B")) and be in uppers (ToUpper()) wp.ListName = list.ID.ToString("B").ToUpper(); // optionally set the title of the web part wp.Title = list.Title; wp.ViewGuid = viewId.ToString("B").ToUpper(); wp.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.None; // add the web part to the limited web part manager. limitedWebPartManager.AddWebPart(wp, webPartZone, webPartOrder); // you need to update the list because a view was just added to it list.Update(); } finally { // do some fun cleanup of disposable items. if you are wondering about the .Web.Dispose() bit look for my // blog article on the memory leaks in the SPLimitedWebPartManager. if (limitedWebPartManager != null) { if (limitedWebPartManager.Web != null) { limitedWebPartManager.Web.Dispose(); } limitedWebPartManager.Dispose(); } if (wp != null) { wp.Dispose(); } list.ParentWeb.AllowUnsafeUpdates = true; } }