6

2 つのテキスト フィールドと選択フィールドを含むリストがあります。Lists.asmx Web サービスを使用して新しいアイテムを挿入するにはどうすればよいですか? Lists.asmx サービスへの Web 参照を作成できるので、これは既知であると想定できます。

コードと CAML クエリの XML を含む完全な例が必要です。サンプルでは C# を使用するのが理想的です。

4

1 に答える 1

16

Lists Web サービスを使用して項目を SharePoint リストに挿入するのは、確かに難しい場合があります。このメソッドは XML in、XML out の形式であるため、パラメーターを正しく取得するのが難しい場合があります。

まず、リストの定義を見てください。以下に示すように、メソッド GetList() で取得できます。

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

ここで重要なのは、フィールドの名前とそのデータ型です。フィールド名は、SharePoint GUI に表示されるものと同じになることはありません。良い例は、リストの最初のフィールドに使用される Title フィールドです。

これでわかったので、SharePoint に移動するためのクエリを作成できます。例:

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

Batch 要素は、XML のルート要素です。内部には、さまざまなメソッドを配置できます。これらは一意の ID (エラーを報告するために使用されます) と、たとえば「新規」または「更新」などのコマンドを取得する必要があります。Method 内に、各フィールドの値を指定する Field 要素を配置します。たとえば、Title フィールドは値「Abcdef」を取得します。GetList() によって返される正確な名前を使用するように注意してください。

SharePoint でクエリを実行するには、UpdateListItems() メソッドを使用します。

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

戻り値は、各更新のステータスを含む XML フラグメントです。例えば:

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

これを解析して ErrorCode を調べ、どのメソッドが失敗したかを確認できます。

実際には、すべての汚れた詳細を処理するラッパー クラスを作成しました。残念ながら、これは私の雇用主が所有しているため、あなたと共有することはできません.

このラッパー クラスは、プロジェクト データベースから情報を取得して SharePoint に投稿するために使用される内部ユーティリティの一部です。社内で開発したものなので、ここに掲載することはできません。

于 2008-09-17T18:53:06.810 に答える