Que podemos hacer con este M Web: UpdateListItems, que el nombre no nos engañe, no solo podemos actualizar sino ademas crear y eliminar, de manera incluyente.
Para poder utilizarlo primero debemos saber como es que recibe datos este webService.
Segun esto, este metodo tiene 2 parametros: listName del tipo string y updates del tipo xmlNode. ListName se refiere al N o Id de la lista a la que queremos acceder.
Y updates es un nodo que contiene todas las operaciones que realizaremos.
algo muy similar a la siguiente estrucuta.
La forma en que construyamos este xmlnode queda a nuetro criterio. solo debemos tener cuidado en los siguientes Method ID="1" Cmd="New", indica el ID del metodo y el Comando que se usara, el ID es importante porque en el resultado de la consulta nos dira si existio error y en que metodo, esto es muy util para hacer seguiemiento de errores y el comando indica si se realizara una creacion, modificacion o eliminacion.
Personalmente uso estas 2 funciones para armar mi batch xmlNode, pero lo uso solo para hacer inserciones y de un solo registro, ustedes podrian modificarlo a sus necesidades:
XmlDocument CreateProjectBatch()
{
XmlDocument batchXml = new XmlDocument();
XmlElement rootNode = batchXml.CreateElement("Batch");
XmlAttribute attribute;
attribute = batchXml.CreateAttribute("OnError");
attribute.InnerText = "Continue";
rootNode.Attributes.Append(attribute);
batchXml.AppendChild(rootNode);
return batchXml;
}
private XmlDocument BatchUpdateProject(XmlDocument batchXml,List
{
XmlElement methodNode = batchXml.CreateElement("Method");
XmlAttribute attribute;
attribute = batchXml.CreateAttribute("ID");
attribute.InnerText = "1"; (batchXml.DocumentElement.ChildNodes.Count + 1).ToString();
methodNode.Attributes.Append(attribute);
attribute = batchXml.CreateAttribute("Cmd");
attribute.InnerText = "New";
methodNode.Attributes.Append(attribute);
for (int i = 0; i < innerxml =" methodNode.InnerXml">
}
batchXml.DocumentElement.AppendChild(methodNode);
return batchXml;
}
Para finalizar este corto post, dejare un ejemplo de como usamos todo este conocimiento:
Primero creo una referencia web, apuntando a la raiz del site donde estan las listas: en mi caso la llamo: SiteRaiz.
Luego creo una clase que me servira para poder armar la estructura ClassDatos que utilizamos en las funciones anteriores.
public class ClassDatos
{
public ClassDatos(string Cln, string Vlr)
{
Columna = Cln;
Valor = Vlr;
}
private string Columna;
public string Columna1
{
get { return Columna; }
set { Columna = value; }
}
private string Valor;
public string Valor1
{
get { return Valor; }
set { Valor = value; }
}
}
Ahora si la funcion principal:
public XmlNode InsertarDatos()//
{
List
Array.Add(new ClassDatos("Title", "Mi Titulo"));//ustedes deben poner mas datos Columna - Valor
XmlDocument NewBatch = CreateProjectBatch();
NewBatch = BatchUpdateProject(NewBatch,Array);
SiteRaiz.Lists xlistService = null;
xlistService = new SiteRaiz.Lists();
xlistService.Url = KeySite;
xlistService.Credentials = new System.Net.NetworkCredential("demo", "demo123456", "Midominio");
xlistService.PreAuthenticate = true;
XmlNode returnInfo = xlistService.UpdateListItems(listGuid, NewBatch.DocumentElement);
}
No Olviden que toda la informacion sobre el estado de las acciones realizadas estan almacenadan en returnInfo , seria bueno que revisen esa data.
Antes que olvide, esto siempre los Blogger nos olvidamos de poner:
Se usaron para este ejemplo las siguientes USING
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Data.SqlClient;
using System.Xml;
using System.Xml.XPath;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.Net.Security;
using System.Security.Authentication;
1 comentario:
Publicar un comentario