SharePoint 2010 - 是否可以使用REST填充数据表单Web部件?

时间:2016-11-22 20:03:39

标签: rest sharepoint sharepoint-2010

我在SharePoint 2010中有一个自定义页面,它使用DataFormWebPart显示来自非常大的列表(近5000个项目)的数据。我在DataFormWebPart中的XSL中定义了一个查询,该查询从列表中查询数据。当我将列表的大小增加到超过5000个项目时,我收到一条错误消息,说我超出了列表视图阈值。

我使用简单的CAML查询来过滤列表中的数据。我的查询永远不会返回甚至接近5000项。我已为我在查询中过滤的列启用了索引编制功能。我不知道还有什么可以尝试,除了可能尝试不同的数据源。

是否可以使用REST调用将SPDataSource调用替换为列表?

编辑:这是CAML查询

onCreate

1 个答案:

答案 0 :(得分:1)

好的,这是我发现的。

根据查询列的文本值进行过滤,在CAML查询中对比超出列表视图阈值的列表。

对索引列建立索引似乎只会索引列值的查找ID ,而不是查找值本身。

但是,您可以在CAML查询中过滤查阅列的查找ID。

示例:在Timbuku上过滤

例如,我们假设您要查询Location查找列设置为" Timbuktu"的任何项目。

您可以使用此查询:

<Where>
    <Eq>
        <FieldRef Name=\"Location\" />
        <Value Type=\"Lookup\">Timbuktu</Value>
    </Eq>
</Where>

该查询将一直有效,直到列表达到列表视图阈值5000,此时它将失败,即使Location列已编入索引

要解决此问题,您可以在外国列表中找到Timbuktu的相应项目并确定其ID。让我们说它是42.您可以在查询中使用ID号,如下所示:

<Where>
    <Eq>
        <FieldRef Name=\"Location\" LookupId=\"true\" />
        <Value Type=\"Lookup\">42</Value>
    </Eq>
</Where>

请注意在LookupId=\"true\"元素中添加了FieldRef

即使超过列表视图阈值,它也能正常工作。

这对您意味着什么

总的来说,这对你的网络部分来说不是好消息。

您需要首先查询位置查找列表中与所需值对应的任何项目,然后使用这些项目的ID来过滤您的实际数据。

使用REST或JavaScript对象模型,以编程方式实现这一点并不困难,但这意味着您可能需要废弃现有的XSLT Web部件。