我已将C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 14 \ TEMPLATE \ FEATURES \ EventsList \ Events \ schema.xml复制到自定义列表模板功能中。我有另一个创建列表实例的功能:
<ListInstance
FeatureId="58c1f9c9-eadb-41dd-a358-e04b2f2e30c0"
TemplateType="100322"
Title="$Resources:core,calendarList"
Url="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder"
OnQuickLaunch="TRUE">
</ListInstance>
然后在页面上放置ListViewWebPart:
<View List="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" BaseViewID="0" WebPartZoneID="TopRightRow" WebPartOrder="3" />
我激活这些功能并转到该网站。 webpart说:目前没有即将举办的活动。要添加新活动,请单击“添加新活动”。单击“添加新事件”,输入信息,然后单击“保存”。页面刷新,没有即将发生的事件消息消失,但没有显示任何项目!如果我去日历,列表项就在那里。是什么给了什么?
我更改列表实例定义,以便它使用开箱即用的模板:
<ListInstance
FeatureId="00bfea71-ec85-4903-972d-ebe475780106"
TemplateType="106
Title="$Resources:core,calendarList"
Url="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder"
OnQuickLaunch="TRUE">
</ListInstance>
当我重建网站,激活功能并重复“添加新”步骤时,该项目现在在页面刷新后正确显示在webpart中。
我已从自定义列表模板中撤消了所有更改。它现在与OOTB架构相同。为什么我的自定义列表模板不起作用,但是OOTB列表模板呢?
答案 0 :(得分:1)
我知道为什么OOTB模板有效,但我能够修复我的自定义模板。
首先,从schema.xml中的BaseViewID =“0”视图中删除XslLink行:
<XslLink>main.xsl</XslLink>
向下滚动到工具栏/ IfHasRights部分。改变案例4:
<Case Value="4"><HTML><![CDATA[<div class="tb"><img src="/_layouts/images/caladd.gif" alt="" /> <a class="ms-addnew" id="idHomePageNewEvent" href="]]></HTML>
<URL Cmd="New" /><HTML><![CDATA[" onclick="javascript:NewItem(']]></HTML>
<ScriptQuote NotAddingQuote="TRUE">
<URL Cmd="New" />
</ScriptQuote><HTML><![CDATA[', true);javascript:return false;" target="_self">]]></HTML><HTML>$Resources:core,AddNewEvent;</HTML><HTML><![CDATA[</a></div>]]></HTML>
</Case>
为:
<Case Value="4"><HTML><![CDATA[<div class="tb"><img src="/_layouts/images/caladd.gif" alt="" /> <a class="ms-addnew" id="idHomePageNewEvent" href="]]></HTML>
<URL Cmd="New" /><HTML><![CDATA[" onclick="javascript:NewItem2(event, ']]></HTML>
<ScriptQuote NotAddingQuote="TRUE">
<URL Cmd="New" />
</ScriptQuote><HTML><![CDATA[');javascript:return false;" target="_self">]]></HTML><HTML>$Resources:core,AddNewEvent;</HTML><HTML><![CDATA[</a></div>]]></HTML>
</Case>
这将启用新的SharePoint 2010弹出窗口NewForm.aspx行为。
接下来,将webpart的配置更改为:
<View List="$Resources:core,lists_Folder;/$Resources:core,calendar_Folder" BaseViewID="0" WebPartZoneID="TopRightRow" WebPartOrder="3">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
<TypeName>Microsoft.SharePoint.WebPartPages.ListViewWebPart</TypeName>
<Title>Calendar</Title>
</WebPart>
]]>
</View>
这与删除XslLink行一起强制webpart呈现为ListViewWebPart而不是XsltListViewWebPart。
现在两个wepart之间的渲染是不同的,所以作为最后一步,使用以下样式,以便ListViewWebPart的添加新链接看起来像XsltListViewWebPart的添加新链接:
div.tb {
border-top:1px solid #EBEBEB;
margin:3px 0 16px;
padding:9px 7px 3px 10px;
}