2011-07-01 10 views
5

Mam dużą bibliotekę dokumentów (w tej chwili ~ 6000 dokumentów) i muszę znaleźć dokument na podstawie niestandardowej wartości pola (niestandardowa kolumna w bibliotece) .Model obiektu klienta Sharepoint 2010 - duża biblioteka - znajdź element bez iteracji

Czy istnieje sposób na odzyskanie tego dokumentu bez konieczności powtarzania wszystkich 6000 dokumentów?

Rozumiem, że w pewnym momencie musi nastąpić iteracja, ale wolałbym, aby stało się to po stronie serwera SharePoint, zamiast przenieść wszystkie do klienta, a następnie wybrać dokument.

Dzięki

Odpowiedz

3

Możesz zapytać SharePoint. Wydajesz zapytanie CAML, które jest wykonywane na serwerze i przywraca tylko te elementy, które pasują do podanych kryteriów. Określasz nazwę niestandardowej kolumny do wyszukiwania i określasz wartość do znalezienia. Aby zwiększyć wydajność, możesz poprosić tylko o kilka pól (np. URL dokumentu). Nie musisz więc powtarzać dokumentów znajdujących się na liście, aby znaleźć przedmiot.

Możesz znaleźć dyskusję tutaj: http://msdn.microsoft.com/en-us/library/ee956524.aspx, a także możesz znaleźć przykłady, jak to zrobić z javascript lub silvelight.

Przykład 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

To Caml kwerenda zwraca dokument pliku chociaż. Jak wyszukujesz za pomocą identyfikatora dokumentu? Próbowałem już identyfikatora dokumentu, wartości identyfikatora dokumentu itd. Bez powodzenia ... – Russell

+0

Jeśli to pole identyfikatora Sharepoint, jego nazwą będzie "ID", jeśli jest to Twoja niestandardowa nazwa pola, najprawdopodobniej będzie to "Document_x0020_ID" . Sharepoint zamienia spacje w nazwach pól na x0020. Ponadto, Sharepoint obcina nazwę pola, jeśli jest zbyt długa i musisz również znać typ pola. Jeśli jest to wbudowane pole "ID", jego typ to Counter, na przykład: 123. Jeśli twoje pole jest niestandardowym polem tekstowym: xxxx powinno działać. – KJRB

+0

Jeśli powyższa sugestia nie zadziała (być może oryginalna nazwa pola została ustawiona na coś innego niż identyfikator dokumentu), musisz dowiedzieć się, jaka jest wewnętrzna nazwa pola dla kolumny "Identyfikator dokumentu". Jednym ze sposobów, aby to zobaczyć, jest sprawdzenie adresu URL danej kolumny witryny. Powinieneś zobaczyć wewnętrzną nazwę w adresie URL tej strony (field =). Wyświetlana nazwa pola nie jest taka sama jak nazwa interanl. Zapytania CAML używają nazw wewnętrznych. – KJRB

Powiązane problemy