2011-07-01 67 views
5

我有一個大型文檔庫(此刻〜6000個文檔),我需要根據自定義字段值(庫上的自定義列)來查找文檔。 。Sharepoint 2010客戶端對象模型 - 大型庫 - 查找項目無迭代

有沒有辦法讓這個文件沒有遍歷所有6000文件?

我知道迭代必須在某個時候發生,但我更喜歡它發生在SharePoint服務器端,而不是將它們全部傳輸到客戶端,然後櫻桃選擇文檔。

謝謝

回答

3

您可以查詢Sharepoint。您發出在服務器上執行的CAML查詢,並僅返回符合您指定條件的項目。您指定要搜索的自定義列的名稱,並指定要查找的值。爲了提高效率,您可以只詢問幾個字段(例如文檔url)。因此,您不需要遍歷列表中的文檔來查找該項目。

你可以在這裏找到一些討論: http://msdn.microsoft.com/en-us/library/ee956524.aspx,你也可以找到例子如何從JavaScript或silvelight做到這一點。

例CAML:

 CamlQuery camlQuery = new CamlQuery(); 
    camlQuery.ViewXml = 
     @"<View> 
      <Query> 
       <Where> 
       <Eq> 
        <FieldRef Name='FileLeafRef'/> 
        <Value Type='Text'>Test.docx</Value> 
       </Eq> 
       </Where> 
       <RowLimit>1</RowLimit> 
      </Query> 
      </View>"; 
+0

即CAML查詢由filename返回文檔雖然。如何通過文檔ID查詢?我已經嘗試過文檔ID,文檔ID值等沒有成功... – Russell

+0

如果這是Sharepoint的ID字段,它的名稱將是「ID」,如果這是您的自定義字段名稱比它很可能是「Document_x0020_ID」 。 Sharepoint用x0020替換字段名稱中的空格。另外,如果Sharepoint過長,並且您還需要知道該字段的類型,則Sharepoint會截斷字段名稱。如果它是內置的「ID」字段,它的類型是Counter,例如: 123。如果您的字段是自定義文本字段: xxxx should work。 – KJRB

+0

如果上述建議不起作用(也許原始字段名稱被設置爲與文檔ID不同),則需要找出「文檔ID」列的內部字段名稱。看到它的一種方法是查看相關網站欄的網址。您應該在該頁面的網址(field =)中看到內部名稱。該字段的顯示名稱與interanl名稱不同。 CAML查詢使用內部名稱。 – KJRB

相關問題