Frage

Ich habe eine Liste mit zwei Textfeldern und ein Auswahlfeld. Wie verwende ich den Lists.asmx Web-Service ein neues Objekt einfügen? Ich kann eine Web-Referenz auf den lists.asmx Dienst machen, Sie können so davon ausgehen, dass dies bekannt ist.

Ich möchte ein komplettes Beispiel mit Code und die XML für die CAML-Abfrage. Im Idealfall würde die Probe C # verwenden.

War es hilfreich?

Lösung

Mit den Listen Webservice Artikel in eine Sharepoint-Liste einfügen kann in der Tat schwierig sein. Da dieses Verfahren von der Form ist: XML in XML, kann es schwierig sein, die Parameter richtig zu machen.

Als erstes sollten Sie einen Blick auf die Liste Definition nehmen. Es kann mit der Methode GetList () abgerufen wird, wie unten dargestellt:

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

hier Wichtig sind die Namen der Felder und deren Datentypen. Feldnamen werden nie die gleiche wie die, die Sie in der Sharepoint-GUI zu sehen. Ein gutes Beispiel ist das Titel-Feld, das für das erste Feld der Liste verwendet wird.

Nun, da Sie wissen, dass Sie die Abfrage auf Sharepoint gehen erstellen können. Ein Beispiel:

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

Das Batch-Element ist das Wurzelelement des XML. Im Inneren kann man verschiedene Methoden setzen. Diese sollten erhalten eine eindeutige ID (die verwendet wird, Fehler zurück zu Ihnen melden) und einen Befehl, der kann zum Beispiel „Neu“ oder „Update“ sein. Innerhalb der Methode, legen Sie Feldelemente, die den Wert für jedes Feld angeben. Zum Beispiel wird das Titelfeld den Wert „Abcdef“. Achten Sie darauf, den genauen Namen zu verwenden, wie es von GetList () zurückgegeben wird.

die Abfrage auf Sharepoint auszuführen, verwenden Sie die Updatelist () Methode:

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

Der Rückgabewert ist ein XML-Fragment, das den Status jedes Update enthält. Zum Beispiel:

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

Sie können diese analysieren und sehen Sie die Error-Code, um zu sehen, welche Methoden fehlgeschlagen.

In der Praxis habe ich eine Wrapper-Klasse erstellt, die sich um alle schmutzigen Details für mich nimmt. Leider wird dies von meinem Arbeitgeber im Besitz so dass ich nicht mit Ihnen teilen kann.

Diese Wrapper-Klasse ist Teil eines internen Dienstprogramm, die Information aus unserer Projektdatenbank zum Abrufen verwendet wird und per Post an Sharepoint. Da es sich bei der Gesellschaft der Zeit entwickelt wurde, ich bin es nicht erlaubt, hier zu posten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top