SharePoint: ¿Cómo se insertan nuevos elementos utilizando el servicio web de listas?

StackOverflow https://stackoverflow.com/questions/85392

  •  01-07-2019
  •  | 
  •  

Pregunta

Tengo una lista con 2 campos de texto y un campo de elección.¿Cómo uso el servicio web Lists.asmx para insertar un nuevo elemento?Puedo hacer una referencia web al servicio listas.asmx, por lo que puedes asumir que esto se sabe.

Me gustaría un ejemplo completo que incluya el código y el XML para la consulta CAML.Idealmente, la muestra usaría C#.

¿Fue útil?

Solución

Usar el servicio web Listas para insertar elementos en una lista de SharePoint puede resultar complicado.Dado que este método es de la forma:XML entra, XML sale, puede resultar difícil conseguir los parámetros correctos.

Primero deberías echar un vistazo a la definición de la lista.Se puede recuperar con el método GetList(), como se muestra a continuación:

XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);

Aquí son importantes los nombres de los campos y sus tipos de datos.Los nombres de los campos nunca serán los mismos que los que ve en la GUI de SharePoint.Un buen ejemplo es el campo Título que se utiliza para el primer campo de la lista.

Ahora que lo sabes, puedes crear la consulta para ir a SharePoint.Un ejemplo:

<Batch OnError="Continue">
    <Method ID="1" Cmd="New">
        <Field Name="Title">Abcdef</Field>
        <Field Name="Project_x0020_code">999050</Field>
        <Field Name="Status">Open</Field>    
    </Method>
</Batch>

El elemento Batch es el elemento raíz del XML.Dentro puedes poner diferentes Métodos.Estos deberían obtener una identificación única (que se utiliza para informarle de errores) y un comando, que puede ser, por ejemplo, "Nuevo" o "Actualizar".Dentro del Método, colocas elementos de Campo que especifican el valor de cada campo.Por ejemplo, el campo Título obtiene el valor "Abcdef".Tenga cuidado de utilizar el nombre exacto tal como lo devuelve GetList().

Para ejecutar la consulta en SharePoint, utilice el método UpdateListItems():

XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);

El valor de retorno es un fragmento XML que contiene el estado de cada actualización.Por ejemplo:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <Result ID="1,New">
    <ErrorCode>0x00000000</ErrorCode>
    <z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6" 
         ows_Title="Abcdef" 
         ows_Project_x0020_code="999050" 
         ows_Status="Open" 
         ows_LinkTitleNoMenu="Abcdef" 
         ows_LinkTitle="Abcdef" 
         ows_ID="1005"            
         ... 
         xmlns:z="#RowsetSchema" />
    </Result>
</Results>

Puede analizar esto y mirar el código de error para ver qué métodos fallaron.

En la práctica, he creado una clase contenedora que se encarga de todos los detalles sucios por mí.Lamentablemente, esto es propiedad de mi empleador, por lo que no puedo compartirlo con usted.

Esta clase contenedora es parte de una utilidad interna que se utiliza para recuperar información de la base de datos de nuestro proyecto y publicarla en SharePoint.Dado que se desarrolló durante el horario laboral, no puedo publicarlo aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top