![](/img/trans.png)
[英]CAML Query not able to put RowLimit while fetching the list from Sharepoint 2010
[英]SharePoint List not considering RowLimit CAML Tag - JavaScript
我在JavaScript中有一個查詢列表的方法。 用戶可以使用某些過濾器。 當我獲取列表的所有項目時(打開表單時),列表將被正確檢索。 但是,當我使用某些添加了“或”子句的過濾器時,出現以下錯誤消息:
“請求失敗。嘗試的操作被禁止,因為它超過了管理員強制執行的列表視圖閾值”
該查詢似乎沒有考慮我的行數限制。 在執行導入數據的過程之前(在測試過程中使用了一些數據),此查詢運行良好。
這是我為執行該操作而生成的XML:
<View>
<Query>
<Where>
<And>
<Eq>
<FieldRef Name="AppvdSuppName" />
<Value Type="Text">Non Approved Prime Supplier</Value>
</Eq>
<Or>
<Contains>
<FieldRef Name="SuppCatName" />
<Value Type="Text">unit 7</Value>
</Contains>
<Contains>
<FieldRef Name="SuppName" />
<Value Type="Text">unit 7</Value>
</Contains>
</Or>
</And>
</Where>
</Query>
<RowLimit>30</RowLimit>
</View>
有人可以幫我找到解決這個問題的方法嗎(我試圖為這些列創建索引,但是不起作用)。
<Contains>
繞過列表視圖閾值 <Contains>
操作無法從列索引中受益,因此不能幫助您避免通過列表視圖閾值(默認為5000個項目)進行限制。
為了解釋為什么索引編制對“包含”操作沒有幫助,請考慮建立索引,例如按書名按字母順序排列在書架上。 (這等效於對“標題”字段應用索引。)
您可以很快找到具有特定標題的書,因為您可以跳到知道該書應放在的位置。 實際上,您只需要知道標題的開頭即可快速找到它。
但是,如果您只知道所要查找的書名的一部分,該怎么辦? 除非您知道標題以該文本開頭,否則查找該書的唯一方法是每次查看一本書。
就像按字母順序排列書籍無法幫助您找到包含某些單詞的書籍一樣,CAML中的<Contains>
元素無法利用列索引。 可以利用列索引的比較操作包括相等性測試( <Eq>
, <Neq>
),不<Neq>
比較( <Gt>
, <Lt>
, <Geq>
, <Leq>
)和<StartsWith>
。
如果您已將索引應用於SuppCatName
和SuppName
列,則CAML查詢中所有可能有效值的精確( <Eq>
)篩選器應能夠繞過列表視圖閾值,假設結果本身(應用這些篩選器之后)不會超過列表視圖閾值5000項。
如果出於業務原因這兩列需要開放式,請考慮將確定子字符串值存儲在另一個索引字段中,以便更好地對其進行過濾。
不幸的是,這不能是一個計算字段,因為它們不能被索引。 但是,如果您不想強迫用戶手動輸入新數據,則可以使用工作流根據SuppCatName
和SuppName
列中的值來設置索引字段的值。
<OrderBy>
元素 <RowLimit>
元素的好處是它使您可以獲取分頁結果。 相當於說“給我前x
項目”。
但是,為了使之有意義,您應該告訴SharePoint對結果進行排序。 否則,“前x
項目”是任意的(默認情況下可能按自動ID字段排序)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.