none
Tratamiento de ows_MetaInfo RRS feed

  • Pregunta

  • Hola,

    Desde la interfaz gráfica de SharePoint he añadido una columna ya existente al contentType Document (en particular Comments).

    Desde mi aplicación cliente quiero recuperar lo que tengo en esa columna con:

    // creamos ViewFields CAML para indicar qué vamos a mostrar
                    XmlDocument viewFieldsDoc = new XmlDocument();
                    XmlNode ViewFields = AddXmlElement(viewFieldsDoc, "ViewFields", "");

                    AddFieldRef(ViewFields, "GUID");
                    AddFieldRef(ViewFields, "ContentType");
                    AddFieldRef(ViewFields, "BaseName");
                    AddFieldRef(ViewFields, "Modified");
                    AddFieldRef(ViewFields, "Comments");
                    AddFieldRef(ViewFields, "EncodedAbsUrl");

    XmlNode listContent = wsList.GetListItems(documentLibraryGUID, null, null, ViewFields, null, QueryOptions, webId);

     

    Observo que en listContent.outerXml no aparece la columna ows_comments como me esperaba para extraer esa info.

    Observando un poco más en detalle puedo ver que aparece en ows_MetaInfo:...................................._Comments:LW|lo ves o no..

     

    Mis preguntas son...

    ¿debo parsear  siempre ows_MetaInfo  (con LINQ XML) hasta encontrar la columna deseada?

    ¿Porqué no aparece la columna añadida como por ejemplo ows_baseName?

     

    Un saludo!!

    jueves, 22 de septiembre de 2011 16:46

Respuestas

  • Hola Alberto,

    Concretamente he añadido dos columnas nuevas (desde la interfaz grafica de SharePoint en propiedades de librería) que me interesan para gestionar cierta info, son: Comments de tipo texto y Nickname tambien de tipo texto.

    Yo pensaba que me deberían aparecer pero no es asi, ninguna de las dos me aparecen (en la interfaz gráfica Si que están)..¿sabes cual puede ser el motivo?

    El código usado es:

     

                   //creamos QueryOptions CAML
                    XmlDocument queryOptionsDoc = new XmlDocument();
                    XmlNode QueryOptions = AddXmlElement(queryOptionsDoc, "QueryOptions", "");
                    //indicamos la carpeta (si es necesario) que queremos mostrar dentro de la librería
                    if (folderName != null) AddXmlElement(QueryOptions, "Folder", docLibName + "/" + folderName + "/");
                    else AddXmlElement(QueryOptions, "Folder", docLibName);
                    AddXmlElement(QueryOptions, "IncludeMandatoryColumns", "TRUE");

                    //Con esto hacemos que se listen de forma recursiva los documentos (los incluídos en subcarpetas)
                    XmlNode node = AddXmlElement(QueryOptions, "ViewAttributes", "");
                    AddXmlAttribute(node, "Scope", "Recursive");

                    XmlDocument QueryDoc = new XmlDocument();              
                    XmlNode ndQuery = QueryDoc.CreateNode(XmlNodeType.Element, "Query", "");
                    ndQuery.InnerXml = "<OrderBy><FieldRef Name='Title'/></OrderBy>";


                    // for debugging
                    queryOptionsDoc.Save(@"C:\Users\mcatalan\Documents\queryOptions.xml");

                    // obtain the list of items in the document library
                    XmlNode listContent = wsList.GetListItems(listGuid, listView, ndQuery, ViewFields, null, QueryOptions, webId);

                    XmlDocument xmlResultsDoc = new XmlDocument();
                    xmlResultsDoc.LoadXml(listContent.OuterXml);

    Voy a echarle un vistazo al Script del link.

     

    Un saludo!





    Resuelto, parece ser que el problema venía finalmente de que la operación de creación de columna se hizo mal (el motivo lo desconozco). Elimine las columnas nuevas añadidas y volví  a crearlas en mi librería y...todo ok!!!

     

    Un saludo!


    viernes, 23 de septiembre de 2011 11:32

Todas las respuestas

  • Hola,

    Desde la interfaz gráfica de SharePoint he añadido una columna ya existente al contentType Document (en particular Comments).

    Desde mi aplicación cliente quiero recuperar lo que tengo en esa columna con:

    // creamos ViewFields CAML para indicar qué vamos a mostrar
                    XmlDocument viewFieldsDoc = new XmlDocument();
                    XmlNode ViewFields = AddXmlElement(viewFieldsDoc, "ViewFields", "");

                    AddFieldRef(ViewFields, "GUID");
                    AddFieldRef(ViewFields, "ContentType");
                    AddFieldRef(ViewFields, "BaseName");
                    AddFieldRef(ViewFields, "Modified");
                    AddFieldRef(ViewFields, "Comments");
                    AddFieldRef(ViewFields, "EncodedAbsUrl");

    XmlNode listContent = wsList.GetListItems(documentLibraryGUID, null, null, ViewFields, null, QueryOptions, webId);

     

    Observo que en listContent.outerXml no aparece la columna ows_comments como me esperaba para extraer esa info.

    Observando un poco más en detalle puedo ver que aparece en ows_MetaInfo:...................................._Comments:LW|lo ves o no..

     

    Mis preguntas son...

    ¿debo parsear  siempre ows_MetaInfo  (con LINQ XML) hasta encontrar la columna deseada?

    ¿Porqué no aparece la columna añadida como por ejemplo ows_baseName?

     

    Un saludo!!

    Mi pregunta es porque LINQ necesita FrameWork superior al que estoy usando ( FrameWork 2.0). Por motivos de incompatibilidad con otros proyectos no puedo subir de versión..

    ¿Alguna sugerencia?

    jueves, 22 de septiembre de 2011 17:00
  • Hola Miguel,

    en el XML resultando de tu llamada, debería de venir la columna Comments como el resto de columnas que pides en la vista.

    ¿De qué tipo es la columna Comments?

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    jueves, 22 de septiembre de 2011 17:24
  • Igual te sirve este script para hacer el parse de la metadata

    http://www.amugofjava.me.uk/2010/02/parsing-sharepoint-metadata.html

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    jueves, 22 de septiembre de 2011 17:27
  • Hola Alberto,

    Concretamente he añadido dos columnas nuevas (desde la interfaz grafica de SharePoint en propiedades de librería) que me interesan para gestionar cierta info, son: Comments de tipo texto y Nickname tambien de tipo texto.

    Yo pensaba que me deberían aparecer pero no es asi, ninguna de las dos me aparecen (en la interfaz gráfica Si que están)..¿sabes cual puede ser el motivo?

    El código usado es:

     

                   //creamos QueryOptions CAML
                    XmlDocument queryOptionsDoc = new XmlDocument();
                    XmlNode QueryOptions = AddXmlElement(queryOptionsDoc, "QueryOptions", "");
                    //indicamos la carpeta (si es necesario) que queremos mostrar dentro de la librería
                    if (folderName != null) AddXmlElement(QueryOptions, "Folder", docLibName + "/" + folderName + "/");
                    else AddXmlElement(QueryOptions, "Folder", docLibName);
                    AddXmlElement(QueryOptions, "IncludeMandatoryColumns", "TRUE");

                    //Con esto hacemos que se listen de forma recursiva los documentos (los incluídos en subcarpetas)
                    XmlNode node = AddXmlElement(QueryOptions, "ViewAttributes", "");
                    AddXmlAttribute(node, "Scope", "Recursive");

                    XmlDocument QueryDoc = new XmlDocument();              
                    XmlNode ndQuery = QueryDoc.CreateNode(XmlNodeType.Element, "Query", "");
                    ndQuery.InnerXml = "<OrderBy><FieldRef Name='Title'/></OrderBy>";


                    // for debugging
                    queryOptionsDoc.Save(@"C:\Users\mcatalan\Documents\queryOptions.xml");

                    // obtain the list of items in the document library
                    XmlNode listContent = wsList.GetListItems(listGuid, listView, ndQuery, ViewFields, null, QueryOptions, webId);

                    XmlDocument xmlResultsDoc = new XmlDocument();
                    xmlResultsDoc.LoadXml(listContent.OuterXml);

    Voy a echarle un vistazo al Script del link.

     

    Un saludo!





    viernes, 23 de septiembre de 2011 7:05
  • Hola Alberto,

    Concretamente he añadido dos columnas nuevas (desde la interfaz grafica de SharePoint en propiedades de librería) que me interesan para gestionar cierta info, son: Comments de tipo texto y Nickname tambien de tipo texto.

    Yo pensaba que me deberían aparecer pero no es asi, ninguna de las dos me aparecen (en la interfaz gráfica Si que están)..¿sabes cual puede ser el motivo?

    El código usado es:

     

                   //creamos QueryOptions CAML
                    XmlDocument queryOptionsDoc = new XmlDocument();
                    XmlNode QueryOptions = AddXmlElement(queryOptionsDoc, "QueryOptions", "");
                    //indicamos la carpeta (si es necesario) que queremos mostrar dentro de la librería
                    if (folderName != null) AddXmlElement(QueryOptions, "Folder", docLibName + "/" + folderName + "/");
                    else AddXmlElement(QueryOptions, "Folder", docLibName);
                    AddXmlElement(QueryOptions, "IncludeMandatoryColumns", "TRUE");

                    //Con esto hacemos que se listen de forma recursiva los documentos (los incluídos en subcarpetas)
                    XmlNode node = AddXmlElement(QueryOptions, "ViewAttributes", "");
                    AddXmlAttribute(node, "Scope", "Recursive");

                    XmlDocument QueryDoc = new XmlDocument();              
                    XmlNode ndQuery = QueryDoc.CreateNode(XmlNodeType.Element, "Query", "");
                    ndQuery.InnerXml = "<OrderBy><FieldRef Name='Title'/></OrderBy>";


                    // for debugging
                    queryOptionsDoc.Save(@"C:\Users\mcatalan\Documents\queryOptions.xml");

                    // obtain the list of items in the document library
                    XmlNode listContent = wsList.GetListItems(listGuid, listView, ndQuery, ViewFields, null, QueryOptions, webId);

                    XmlDocument xmlResultsDoc = new XmlDocument();
                    xmlResultsDoc.LoadXml(listContent.OuterXml);

    Voy a echarle un vistazo al Script del link.

     

    Un saludo!





    Resuelto, parece ser que el problema venía finalmente de que la operación de creación de columna se hizo mal (el motivo lo desconozco). Elimine las columnas nuevas añadidas y volví  a crearlas en mi librería y...todo ok!!!

     

    Un saludo!


    viernes, 23 de septiembre de 2011 11:32