2011-07-01 8 views
5

Tengo una gran biblioteca de documentos (en este momento ~ 6000 documentos) y necesito encontrar un documento basado en un valor de campo personalizado (columna personalizada en la biblioteca) .Sharepoint 2010 Modelo de objetos cliente - Biblioteca grande - Buscar elemento sin iteración

¿Hay alguna manera de recuperar este documento sin recorrer los 6000 documentos?

Yo entiendo que una iteración debe ocurrir en algún momento, pero yo preferiría que suceda en el lado del servidor de SharePoint, en lugar de transferir a todos ellos al lado del cliente y luego cereza recoger el documento.

Gracias

Respuesta

3

Puede consultar Sharepoint. Usted emite una consulta CAML que se ejecuta en el servidor y devuelve solo los elementos que coinciden con los criterios que ha especificado. Especifique el nombre de la columna personalizada para buscar y especifique el valor para buscar. Para mayor eficiencia, puede solicitar solo algunos campos (url del documento, por ejemplo). Por lo tanto, no necesita repetir los documentos en la lista para encontrar el elemento.

Puede encontrar alguna discusión aquí: http://msdn.microsoft.com/en-us/library/ee956524.aspx y también puede encontrar ejemplos de cómo hacerlo desde javascript o silvelight.

Ejemplo 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

Eso Caml consulta devuelve el documento por nombre de archivo sin embargo. ¿Cómo consultas por ID del documento? Ya he intentado con Document ID, Document ID Value, etc. sin éxito ... – Russell

+0

Si este es el campo ID de Sharepoint, su nombre sería "ID", si este es su nombre de campo personalizado, es muy probable que sea "Document_x0020_ID" . Sharepoint reemplaza espacios en nombres de campo con x0020. Además, Sharepoint trunca el nombre del campo si es demasiado largo y también necesita saber el tipo del campo. Si está integrado en el campo "ID", su tipo es Contador, por ejemplo: 123. Si su campo es un campo de texto personalizado: xxxx debería funcionar. – KJRB

+0

Si la sugerencia anterior no funciona (tal vez el nombre del campo original se configuró en algo diferente a la ID del documento) necesitará averiguar cuál es el nombre de campo interno para su columna "ID del documento". Una forma de verlo es mirar la url de la columna del sitio en cuestión. Debería ver un nombre interno en la url de esa página (campo =). El nombre para mostrar del campo no es lo mismo que el nombre interanl. Las consultas CAML usan nombres internos. – KJRB

Cuestiones relacionadas