Domanda

Ho un elenco con 2 campi di testo e un campo di scelta.Come posso utilizzare il servizio web Lists.asmx per inserire un nuovo elemento?Posso fare un riferimento web al servizio list.asmx, quindi puoi presumere che questo sia noto.

Vorrei un esempio completo che includa il codice e l'XML per la query CAML.Idealmente l'esempio utilizzerebbe C#.

È stato utile?

Soluzione

L'utilizzo del servizio Web Elenchi per inserire un elemento in un elenco di SharePoint può effettivamente essere complicato.Poiché questo metodo è nella forma:XML in, XML out, può essere difficile ottenere i parametri corretti.

Per prima cosa dovresti dare un'occhiata alla definizione della lista.Può essere recuperato con il metodo GetList(), come mostrato di seguito:

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

Importanti qui sono i nomi dei campi e i relativi tipi di dati.I nomi dei campi non saranno mai uguali a quelli visualizzati nella GUI di SharePoint.Un buon esempio è il campo Titolo che viene utilizzato per il primo campo dell'elenco.

Ora che lo sai, puoi creare la query per accedere a SharePoint.Un esempio:

<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>

L'elemento Batch è l'elemento radice dell'XML.All'interno puoi inserire diversi metodi.Questi dovrebbero avere un ID univoco (che viene utilizzato per segnalarti gli errori) e un comando, che può ad esempio essere "Nuovo" o "Aggiorna".All'interno del metodo inserisci gli elementi Field che specificano il valore per ciascun campo.Ad esempio, il campo Titolo assume il valore "Abcdef".Fare attenzione a utilizzare il nome esatto restituito da GetList().

Per eseguire la query su SharePoint, utilizzare il metodo UpdateListItems():

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

Il valore restituito è un frammento XML contenente lo stato di ciascun aggiornamento.Ad esempio:

<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>

Puoi analizzarlo e guardare ErrorCode per vedere quali metodi hanno fallito.

In pratica ho creato una classe wrapper che si prende cura di tutti i dettagli sporchi per me.Sfortunatamente questo è di proprietà del mio datore di lavoro quindi non posso condividerlo con te.

Questa classe wrapper fa parte di un'utilità interna utilizzata per recuperare informazioni dal database del nostro progetto e pubblicarle su SharePoint.Poiché è stato sviluppato durante l'orario lavorativo, non mi è consentito pubblicarlo qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top