代码之家  ›  专栏  ›  技术社区  ›  Rich Bennema

自定义事件列表模板的ListViewWebPart问题

  •  1
  • Rich Bennema  · 技术社区  · 14 年前

    我已将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" />
    

    我激活了这些功能并进入了网站。网页上说:目前没有即将举行的活动。要添加新事件,请单击“添加新事件”。我单击addnewevent,输入信息,然后单击Save。页面刷新,没有即将发生的事件消息消失,但没有显示任何项目!如果我转到日历,列表项就在那里。有什么好处?

    我更改了列表实例定义,以便它使用现成的模板:

    <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>
    

    当我重建站点、激活功能并重复“添加新的”步骤时,页面刷新后,该项目现在在Web部件中正确显示。

    我已经从自定义列表模板中备份了所有更改。它现在与OOTB模式相同。为什么我的自定义列表模板不起作用,而OOTB列表模板起作用?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Rich Bennema    14 年前

    首先,从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="" />&#160;<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="" />&#160;<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>
    

    接下来,将Web部件的设置更改为:

    <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行的删除一起迫使Web部件呈现为ListViewWebPart,而不是 XsltListViewWebPart

    现在,两个wepart之间的呈现不同,因此最后一步,请使用以下样式,以便ListViewWebPart的add new链接看起来像XsltListViewWebPart的add new链接:

    div.tb {
    border-top:1px solid #EBEBEB;
    margin:3px 0 16px;
    padding:9px 7px 3px 10px;
    }