在SharePoint中,我使用跨站点列表查询来获取具有特定元数据标签的所有新闻,由wssId标识(wssId是对的,我仔细检查过):
<Where>
<And>
<And>
<And>
<Neq>
<FieldRef Name='Focus' />
<Value Type='Integer'>1</Value>
</Neq>
<IsNotNull>
<FieldRef Name='Date' /></IsNotNull>
</And>
<Eq>
<FieldRef Name='PublishingPageLayout' />
<Value Type='URL'>
/_catalogs/masterpage/PageLayout_NewsDetail.aspx
</Value>
</Eq>
</And>
<In>
<FieldRef LookupId='TRUE' Name='Tag' />
<Values>
<Value Type='Integer'>5</Value>
<Value Type='Integer'>2</Value>
</Values>
</In>
</And>
</Where>
<OrderBy>
<FieldRef Name='Date' Ascending='FALSE' />
</OrderBy>
ViewFields:
<FieldRef Name='Title' Nullable='True' Type='Text'/>
<FieldRef Name='Date'/>
<FieldRef Name='Text'/>
<FieldRef Name='FocusImage'/>
<FieldRef Name='FileRef'/>
<FieldRef Name='MediaList'/>
<FieldRef Name='EncodedAbsUrl'/>
Lists = "<Lists ServerTemplate='850' />";
Webs = "<Webs Scope='Recursive' />";
嗯,这个查询大部分时间效果都很好。最近在某些场合开始变得奇怪。简而言之,CrossListQueryCache对象的GetSiteData的结果将Text的DataTable列与Content Type I'查询的Tag_0隐藏字段中的那一列交换。因此,我没有看到新闻的文字,而是看到一堆“标记名| Guid;标记名| Guid;”......
没有数据操作,直接来自GetSiteData的结果显然是错误的。
从SP CAML Query Helper(或从简单的SPQuery)运行的查询工作正常。
奇怪的是,查询是一致的:一旦出错,它就会出错。没有每个标签过滤器(或其他过滤器)的相同查询效果很好。
是否有人遇到类似问题?我很遗憾。