2013-11-21 18 views
4

我需要創建一個Infopath表單,用戶可以使用該表單創建帖子並更新Sharepoint列表。使用Sharepoint上的UpdateListItems webbservice使用Infopath表單而無需託管代碼

我找到了列表GUID和Lists.asmx webbservice。我確信我是管理員,對相關列表擁有完整的權利。該列表是一個基本的2列(1行文本)。

我已創建的CAML模板:使用CAML

<?xml version="1.0" encoding="UTF-8"?> 
<Batch OnError="Continue"> 
    <Method ID="1" Cmd="New"> 
     <Field Name="Field1"></Field> 
     <Field Name="Field2"></Field> 
    </Method> 
</Batch> 

兩個數據連接:連接到包含所述GUID可變LISTNAME:

XML-file - loading the CAML. 
Send data using Lists.asmx-service - "UpdateListItems"-method. 

的用於UpdateListItems參數:TNS。 tns:更新連接到/批處理加載的CAML,包括XML子樹。

我已經使用XMLfile連接(CAML)添加了一個重複表格,我可以在其中填充新Listitem的列值。

我添加了一個按鈕,觸發使用dataconnection和「UpdateListItems」方法的操作規則。該按鈕也被測試觸發其他規則動作,所以按鈕本身工作。

正如我嘗試發佈一個新項目的sharepoint-list我收到沒有錯誤消息,一切似乎工作正常,但沒有項目創建。

如果我改變任何東西,比如GUID或其他東西,我會收到不同的錯誤消息,所以它看起來像Infopath認爲一切正常,但Sharepoint沒有對我的列表做任何事情。沒有項目被創建。

任何人有任何想法,它可能會出錯?

編輯:我使用了相同Sharepoint服務器中的其他webservices,沒有任何問題。

回答

0

使用UpdateListItem創建新項目時,需要爲列表的ID列添加一個Field標記。它應該如下格式化:

<Field Name='ID'>New</Field> 
+1

謝謝,我現在試過你的建議,但它沒有奏效。 – Plarsen

+0

由於您沒有收到錯誤消息,因此您可能會嘗試運行代碼,而像[Wireshark](http://www.wireshark.org/)這樣的工具正在運行。您將能夠看到網絡流量,並且可以更好地瞭解問題所在。 – ErinsMatthew

0

標題仍然是列表中的必需列(默認情況下)。如果是這樣,嘗試添加到您的XML:

<Field Name='Title'></Field> 

,我不認爲做一個新的命令(插入一個新的列表項)時

<Field Name='ID'></Field> 

是必需的,但它需要一個更新命令(更新現有的列表項) - 當我測試這個時,我當然不需要它。

+1

嘗試使用和不使用「標題」和「ID」字段以及所有組合,現在仍保留相同的結果。我也嘗試從''中刪除ID =「1」,但沒有成功。 – Plarsen

1

我遇到了同樣的問題 - 您必須將Web服務提交到站點/_vti_bin/lists.asmx而不是服務器/_vti_bin/lists.asmx。例如,您的網站位於地址server/site,您應該使用server/site/_vti_bin/lists.asmx,而不是server/_vti_bin/lists.asmx。我的問題是有些子網站,所以你可以檢查它是否與你一樣。

2

這個建議可能有點過時,但...

我剛剛有一個類似的問題。通過使用SharePoint服務器上的ULSViewer並閱讀MSDN文檔,我發現CAML字段標記中的Name屬性應該是Sharepoint在創建列表時爲其分配的內部名稱。在我的情況下,我不得不改變CAML:

<Field Name="pub1"> 

to 

<Field Name="_x0066_ub1"> 
+0

對不起,這是2017年,我仍然嘗試學習InfoPath ...我與你有類似的問題。我可以添加新記錄,但所有字段都是空白的。我不確定哪部分是錯的。一個正確的XML模式應該如何看起來如何? – Mark

+0

我修好了。提交按鈕有一個動作「關閉此表單」。該操作將在任何代碼隱藏之前運行。因此不添加新記錄! – Mark