jueves, 12 de febrero de 2009

Maqueteando los datos revueltos por _vti_bin/lists.asmx

Sharepoint nos ofrece acceso a sus datos a traves de Servicios Web, a los cuales podemos acceder a traves del famoso _vti_bin/lists.asmx, asi que desde el inicio del proyecto empece a utilzar estos Servicios Web, entre todos los metodos Web que ofrece hay uno que uso muy seguido GetListItems, que funciona de maravillas, la manera de trabajar con este Metodo Web es facil, haciendo uso de herramientas tales como: U2UCamlCreator podemos ir creando consultas en formato XML. Algo similar a la imagen



lo remarcado en la imagen nos usar como parametros para este Metodo Web.
Por temas de mejorar el diseño hice una DLL llamada MossHelper.dll que enmascara este ServicioWeb y ofrece un metodo llamado MyQueryList(string Myquery, string listGuid, int NumReg, string MyView), que fui armado segun las necesidades, si a alquien ayuda podria adjuntar el codigo de esta dll.
Mando los parametros necesario Myquery, es la primera region del grafico, listGuid es la GUID de la lista o libreria donde deseas consultar, NumReg es el numero de registros que deseas retornar (si deseas devolver todos, mandar 0) MyView, es la segunda region del grafico,
Hasta aqui todo funciona perfecto, pero la data me la devuelve de esta manera:


Inicialmente dije bueno, no importa total alli esta la data que necesitan (y otra data que realmente no se para que sirve, si alguien sabe que es toda esa data agradeceria decirmelo y sobre todo para que me puede servir), pero luego cree un algoritomo que mejore ese esquema XML y solo me muestre la data que pedi, y sin el prefijo "ows_" en todo los campos.
Algo como la siguiente Imagen.



Poco a poco fui haciendo un Algoritmo no optimizado por cierto, pero que funciona, queda en ustedes adecuarlo a su realidad y mejorarlo



Me hubiera gustado poder escribir el codigo, pero siempre hay problemas con las etiquetas de XML.
Bueno lo explico un poco.
Parta esto cree una clase llamada: ClassDatos, con 3 Campos Columna, Valor 1, Valor 2; para este caso el Columna tendra el nombre de la columna a consultar, Valor 1, un valor por defecto en caso que no encuentre el campo o el campo este vacio y Valor 2 el nombre con que deseas ver tu campo.
Hago uso de la funcion que mensione previamente.
Espero sea util, saludos.
El resto es tema revisar el codigo.

1 comentario:

edudebolivar dijo...

Marco, estoy teniendo un problema.
Llamo a GesListItem desde mi site y no me devuelve elementos. Le estoy pasando las DefaultCredentials.

Ahora si le paso mis credenciales de forma explícita si me devuelve elementos. Explicitamente lo hago con un new NetworkCredential(username,password,domainname).

Sabés que puede llegar a ser ???

Espero tus comentarios. Gracias.