我有一個包含2個文本字段的列表和一個選擇字段。如何使用Lists.asmx Web服務插入新項目?我可以對lists.asmx服務做一個web引用,所以你可以假設這是已知的。SharePoint - 如何使用列表Web服務插入新項目?
我想要一個完整的例子,包括CAML查詢的代碼和XML。理想情況下,示例將使用C#。
我有一個包含2個文本字段的列表和一個選擇字段。如何使用Lists.asmx Web服務插入新項目?我可以對lists.asmx服務做一個web引用,所以你可以假設這是已知的。SharePoint - 如何使用列表Web服務插入新項目?
我想要一個完整的例子,包括CAML查詢的代碼和XML。理想情況下,示例將使用C#。
使用列表web服務將項目插入SharePoint列表確實可能非常棘手。由於此方法的形式爲:XML in,XML out,因此很難獲取正確的參數。
首先你應該看看列表定義。它可以與所述方法的GetList()檢索,如下所示:
XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);
重要這裏的字段和數據類型的名稱。字段名稱將永遠不會與您在SharePoint GUI中看到的名稱相同。一個很好的例子是用於列表的第一個字段的標題字段。
現在您知道了,您可以創建查詢以轉到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(用於向您回報錯誤)和一個命令,例如可以是「新建」或「更新」。在方法內部,您可以將Field元素指定爲每個字段的值。例如,標題字段獲得值「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>
您可以分析這一點,看看錯誤代碼,看看哪些方法失敗。
實際上,我已經創建了一個包裝類,爲我處理所有骯髒的細節。不幸的是,這是我的僱主所有,所以我不能與你分享。
此包裝類是內部實用程序的一部分,用於從我們的項目數據庫檢索信息並將其發佈到SharePoint。由於它是在公司時間開發的,我不能在這裏發佈。
這個包裝類是你的公司在產品中包含的東西,還是僅僅是你創建的內部工具類?只是好奇 - 我的僱主不會在乎我是否共享實用程序代碼,但我爲一個非常進步的組織工作。 – cori 2008-09-18 12:46:13