前言
最近系统从2010升级至2013,有自定义模板页。突然发现在列表中切换不了视图,让我很费解。
我尝试过以下解决方案:
- 去掉自定义css
- 去掉自定义js
- 禁用所有自定义功能
结果都没有效还是一样的不出来。甚至我重新生成了新的模板页。
原因
后来我发现就算在设计管理器中创建新的 空白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>-->
效果:
缺少这一段代码:
<!--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>-->
这才是我们想要的:
总结
没什么总结,总结就是我最近越来越恨2013的设计者了!!!。。。。。。