跨站点列表查询返回错误的视野?

时间:2012-07-31 18:09:00

标签: c# sharepoint sharepoint-2010 spquery

在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)运行的查询工作正常。

奇怪的是,查询是一致的:一旦出错,它就会出错。没有每个标签过滤器(或其他过滤器)的相同查询效果很好。

是否有人遇到类似问题?我很遗憾。

0 个答案:

没有答案