SharePoint 2013 自定义模板页后在列表里修改不了视图

前言

最近系统从2010升级至2013,有自定义模板页。突然发现在列表中切换不了视图,让我很费解。

我尝试过以下解决方案:

  1. 去掉自定义css
  2. 去掉自定义js
  3. 禁用所有自定义功能

结果都没有效还是一样的不出来。甚至我重新生成了新的模板页。

原因

后来我发现就算在设计管理器中创建新的 空白HTML模板页还是一样的会有问题。真正的原因是因为模板页中缺少一段必要代码。就算是系统自带的Seattle默认页在经过修改了HTML模板页然后重新生成后一样会有问题。所以我判断这是一个设计缺陷

默认情况下生成的空白html模板页的PlaceHolderLeftNavBar是这样的

  <!--SPM:<SharePoint:AjaxDelta id="DeltaPlaceHolderLeftNavBar" Visible="false" class="ms-core-navigation ms-belltown-sideNavDelta" BlockElement="true" runat="server">-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" Visible="false" runat="server">-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftActions" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" Visible="false" runat="server"/>--> <!--SPM:</asp:ContentPlaceHolder>-->
<!--SPM:</SharePoint:AjaxDelta>-->

  效果:

  SharePoint 2013 自定义模板页后在列表里修改不了视图

缺少这一段代码:

<!--SPM:<SharePoint:SPNavigationManager id="TreeViewNavigationManagerV4" runat="server"	ContainedControl="TreeView" CssClass="ms-tv-box">-->
<!--SPM:<SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">-->
<!--SPM:</SharePoint:DelegateControl>-->
<!--SPM:</SharePoint:SPNavigationManager>-->

  

解决方案

将缺失的代码插入

<!--SPM:<SharePoint:AjaxDelta id="DeltaPlaceHolderLeftNavBar" Visible="false" class="ms-core-navigation ms-belltown-sideNavDelta" BlockElement="true" runat="server">-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" Visible="false" runat="server">-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftActions" Visible="false" runat="server"/>-->
<!--SPM:<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" Visible="false" runat="server"/>--> <!--就是这里的问题-->
<!--SPM:<SharePoint:SPNavigationManager id="TreeViewNavigationManagerV4" runat="server" ContainedControl="TreeView" CssClass="ms-tv-box">-->
<!--SPM:<SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">-->
<!--SPM:</SharePoint:DelegateControl>-->
<!--SPM:</SharePoint:SPNavigationManager>--> <!--SPM:</asp:ContentPlaceHolder>-->
<!--SPM:</SharePoint:AjaxDelta>-->

这才是我们想要的:

SharePoint 2013 自定义模板页后在列表里修改不了视图

总结

没什么总结,总结就是我最近越来越恨2013的设计者了!!!。。。。。。

上一篇:ALI3173沙箱安卓端报错


下一篇:组合模式之拼凑的美好