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.






