Sharepoint 如何获取内容查询Web部件以显示来自多种列表类型的项目?
我正在尝试使用内容查询Web部件在Sharepoint 2010中创建“最新内容”页面。此页面的目标是显示过去14天内上载的所有文档。诀窍在于,这些文档可以属于在任意数量的列表定义中定义的任意数量的列表。这些是基于自定义内容类型的自定义列表定义。我们的每个自定义内容类型都继承自一个基本内容类型。它们也都属于同一内容类型组。我已经确定不可能使用SP UI设置CQWP来返回来自多个列表类型的项目,因为其中一个必需的查询字段是list type。所以-我试图用CAML来定义这个CQWP,这就是我遇到的问题。我的最终目标是在站点定义(onet.xml文件)中定义CAML,但我也没有从SP UI上传.webpart文件。我已经找到了几篇文章,解释了应该如何做到这一点,但还没有找到建议的解决方案。这告诉我应该可以使用listsoferride元素。这篇文章告诉我怎么做:Sharepoint 如何获取内容查询Web部件以显示来自多种列表类型的项目?,sharepoint,sharepoint-2010,cqwp,Sharepoint,Sharepoint 2010,Cqwp,我正在尝试使用内容查询Web部件在Sharepoint 2010中创建“最新内容”页面。此页面的目标是显示过去14天内上载的所有文档。诀窍在于,这些文档可以属于在任意数量的列表定义中定义的任意数量的列表。这些是基于自定义内容类型的自定义列表定义。我们的每个自定义内容类型都继承自一个基本内容类型。它们也都属于同一内容类型组。我已经确定不可能使用SP UI设置CQWP来返回来自多个列表类型的项目,因为其中一个必需的查询字段是list type。所以-我试图用CAML来定义这个CQWP,这就是我遇到的
<![CDATA[
<Lists BaseType="0">
</Lists> ]]>
]]>
因为我在寻找文档库,所以我会使用基本类型1而不是0
我无法确定onet.xml文件中的语法,因此我想我应该先尝试将其作为.webpart文件上传
这就是ListsOverride元素的外观:
<property name="ListsOverride" type="string">
<![CDATA[<Lists BaseType="1"></Lists>]]>
</property>
]]>
然而,当我在CAML中上传一个带有这个的.webpart文件并将该Web部件添加到一个页面时,我会在Sharepoint中破坏该页面。这就是我得到的:
“/”应用程序中出现服务器错误。
试图使用已不存在的对象
对该错误的研究向我指出了处理对象(如SPContext.Current.Web)的代码,但我这里甚至没有任何代码。看起来CQWP几乎有一个bug。或者-我没有正确格式化CAML,或者我需要在CAML中的不同元素中更改某些内容
我正在运行带有所有最新补丁的Sharepoint 2010 SP1。(我相信)
我尝试过其他几种格式,但运气不好
我试着去掉嵌入的CDATA标记,如下所示:
<property name="ListsOverride" type="string">
<Lists BaseType="1"></Lists>
</property>
<property name="ListsOverride" type="string">
<![CDATA[<Lists><List Id="{5a2f79bb-cc82-4171-88ac-65f20e7b5fa8}" /></Lists>]]>
但是Sharepoint不允许我上传.webpart文件。(无效的.webpart文件)
嵌入CDATA标记的格式似乎是我上传文件的唯一方式
我尝试(只是为了缩小我的问题范围)指定如下特定列表:
<property name="ListsOverride" type="string">
<Lists BaseType="1"></Lists>
</property>
<property name="ListsOverride" type="string">
<![CDATA[<Lists><List Id="{5a2f79bb-cc82-4171-88ac-65f20e7b5fa8}" /></Lists>]]>
]]>
这不会破坏页面,但Web部件在页面上给出的错误不太有用(无法显示此Web部件)
我不能100%确定我在那次尝试中使用了合适的GUID。我在VisualStudio的服务器资源管理器中(在“列表和库>>文档库>>我的列表类型”下)找到了它。(我从Id属性获得了GUID)
我应该提到的是,我对Sharepoint开发相当陌生。我希望Sharepoint的核心功能会比这简单得多
有人能指出我做错了什么吗?也许整个事情我做得不对?我感谢任何人能给我的帮助!我发现问题出在SharePoint填充的所有“额外”字段上 在我的例子中,我首先在页面上配置内容查询web部件,然后将其导出以获取xml。然后,我将xml放在我的网站定义的onet.xml文件中。最初这很好,但在我尝试配置基本类型时,它的行为并没有达到预期 如果我删除了所有的附加字段,只使用了我实际需要配置的几个字段,那么它就开始工作了。事实上,我甚至不需要使用ListsOverride元素,因为有一个BaseType属性工作得很好。看来我正在使用的其他属性之一确实是我的is的原因起诉 以下是我在onet.xml中使用的Web部件定义:
<AllUsersWebPart WebPartZoneID="WebPartZone" WebPartOrder="1">
<![CDATA[
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">Recently Updated Documents</property>
<property name="ChromeType" type="chrometype">TitleOnly</property>
<property name="ChromeState" type="chromestate">Normal</property>
<property name="WebUrl" type="string">~site</property>
<property name="BaseType" type="string">1</property>
<property name="ContentTypeBeginsWithId" type="string">0x0101008B0856395DCD40F99C9B42B6BF92BDDB</property>
<property name="FilterField1" type="string">{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}</property>
<property name="FilterType1" type="string">DateTime</property>
<property name="FilterOperator1" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterFieldQueryOperator, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">Geq</property>
<property name="FilterDisplayValue1" type="string">-14</property>
<property name="FilterValue1" type="string">-14</property>
<property name="SortBy" type="string">{8c06beca-0777-48f7-91c7-6da68bc07b69}</property>
<property name="SortByFieldType" type="string">DateTime</property>
<property name="SortByDirection" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+SortDirection, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">Desc</property>
<property name="ItemXslLink" type="string">~sitecollection/Style Library/DealerPortal/ItemStyle.xsl</property>
<property name="CommonViewFields" type="string">Name,Text;Created,DateTime;Modified,DateTime;Body,Note;DocumentIconImageUrl;OnClickForWebRendering</property>
</properties>
</data>
</webPart>
</webParts>
]]>
</AllUsersWebPart>
无法导入此Web部件。
最近更新的文件
TitleOnly
正常的
~site
1.
0x0101008B0856395DCD40F99C9B42B6BF92BDDB
{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}
日期时间
Geq
-14
-14
{8c06beca-0777-48f7-91c7-6da68bc07b69}
日期时间
描述
~sitecolection/Style Library/DealerPortal/ItemStyle.xsl
名称,文本;已创建,日期时间;已修改,日期时间;正文,注释;DocumentIconImageUrl;OnClickForWebRendering
]]>
非常好。欢迎来到stackoverflow!