Клиентская объектная модель Sharepoint 2010 - Большая библиотека - Найти элемент без итерации - PullRequest
5 голосов
/ 01 июля 2011

У меня большая библиотека документов (на данный момент ~ 6000 документов), и мне нужно найти документ на основе значения настраиваемого поля (настраиваемый столбец в библиотеке).

Есть ли способ вернуть этот документ без перебора всех 6000 документов?

Я понимаю, что в какой-то момент итерация должна произойти, но я бы предпочел, чтобы она происходила на стороне сервера SharePoint, а не передавала их все на сторону клиента, а затем выбирала документ.

Спасибо

1 Ответ

3 голосов
/ 04 июля 2011

Вы можете запросить 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>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...