According to the popularity of the blog post : “Navigation hierarchies and key filters with slide library“, I decided to share a code that fix Slide Library view. This code snippet replace existing ListViewWebPart on the slide library view to the new XsltListViewWebPart and configure it in a proper way.
If you execute this code on the all slide library views then you will get a full-functional slide library with fixed navigation and filters.
public bool ReplaceListViewWebPartForView(SPWeb web, SPList list, SPView view) { using (SPLimitedWebPartManager webPartManager = web.GetLimitedWebPartManager(view.Url, PersonalizationScope.Shared)) { SPLimitedWebPartCollection pageWebParts = webPartManager.WebParts; ListViewWebPart listViewWebPart = pageWebParts.OfType<ListViewWebPart>().FirstOrDefault(); if (listViewWebPart == null || listViewWebPart.IsClosed) return false; var xsltListViewWebPart = new XsltListViewWebPart { ListName = listViewWebPart.ListName, ViewFlags = listViewWebPart.ViewFlags, ViewId = listViewWebPart.ViewId, ViewGuid = listViewWebPart.ViewGuid, Visible = listViewWebPart.Visible, DisplayName = view.Title, Default = view.DefaultView.ToString().ToUpper(), WebId = listViewWebPart.WebId, NoDefaultStyle = listViewWebPart.UseDefaultStyles.ToString().ToUpper() }; //create new Webpart and set parameters from existing ListViewWebPart webPartManager.AddWebPart(xsltListViewWebPart, listViewWebPart.ZoneID, 0); //fix ViewFlags since SP added "Hidden" flag xsltListViewWebPart.ViewFlags = listViewWebPart.ViewFlags; webPartManager.DeleteWebPart(listViewWebPart); webPartManager.SaveChanges(xsltListViewWebPart); list.Update(); web.Update(); //get updated list and fix issue with empty title to allow View be visible on the site SPList list1 = web.Lists[list.ID]; SPView view1 = list1.Views[new Guid(xsltListViewWebPart.ViewGuid)]; view1.Title = view.Title; view1.DefaultView = view.DefaultView; view1.MobileDefaultView = view.MobileDefaultView; view1.MobileView = view.MobileView; view1.Update(); web.Update(); return true; } }
P.S. Great thanks to the Dmitry Chirun for this fix.