InfoPath 2010呼叫REST的乙個小應用

2022-02-25 21:43:36 字數 1825 閱讀 3668

在做infopath 2007相關的專案中,我們經常使用infopath來呼叫sharepoint 2007的web service. 那麼如今sharepoint 2010支援了rest,我們可以嘗試呼叫rest。

需求:自定義乙個sharepoint 2010 列表的表單。要求在使用者輸入「title」時,檢查一下當前列表中是否有相同title的item存在,如果存在的話,禁止表單的提交。

思路:使用infopath 2010呼叫rest實現。首先通過rest去列表中查詢是否有title等於當前表單填寫的item,如果有的話,返回結果,並且禁止提交。如果查詢不到,則允許提交。

第一步,自定義表單。點選列表專案的」自定義表單」,然後對表單做一些簡單的處理,如下圖。(列表的列有:title, mydate以及query result,這個是記錄title的rest查詢的返回結果的)

第二步,新增資料來源. 我們需要新增乙個「接收資料(receive data)」的資料來源。我現在需要查詢的是列表testlist,所用rest的url如下:                         「http://servername/_vti_bin/listdata.svc/testlist」

第三步,對infopath的rule新增邏輯。

選中表單中的title文字框,新增乙個「當字段的值發生變化時(this field changed)」使用「查詢資料(query for data)」.rules的邏輯和呼叫web service(時的邏輯基本類似:拼接rest, 執行查詢並且返回結果。

拼接rest:

concat("http:///_vti_bin/listdata.svc/testlist", "?$filter=title eq ", "'", title, "'")
執行查詢:這裡只需要做乙個指向於data connection的「query for data」的活動即可。

返回查詢結果:(我這裡對返回的結果的幾個屬性做了拼接,並且把結果的值返回到query result這個文字中)

第四步,增加驗證。

我的驗證邏輯是:如果查詢沒有返回結果,表示相同title的item不存在;如果有返回結果,表示存在相同title的item。對title的文字控制項在增加乙個驗證(validating)的邏輯:

condition: qurey resultis not blank.

screentip: the item has existed.

第五步,發布表單。

接下來,就去驗證你的邏輯吧!

注意:1.在使用sharepoint 2010的rest的時候,首先要安裝ado.net 3.5sp1:

2.在你拼接rest時,你最好先在url測試一下,檢查是否能用。

參考:

Infopath2010 實現大寫金額的方法

infopath2010自帶的函式中無大寫金額的轉換,只能通過程式設計方式來實現,步驟如下 1 先插入兩個textbox,如圖所示 2 點選開發工具,語言c 3 開啟 編輯器 4 全部 如下 namespace 金額轉換 set 注意 以下是 microsoft infopath 所需的過程。可以使...

如何在InfoPath2010中轉換主資料來源

使用過infopath2007的人應該都知道,我們在設計或編輯乙個infopath表單時,除了可以在設計介面的同時構建主資料來源外,還可以事先將編輯好的主資料來源xsd檔案匯入到infopath中,然後根據資料來源的結構來設計表單介面。下面是這兩種方法的一些簡單介紹 在xsd中將節點定義為支援inf...

為Infopath2010重複表新增自動遞增的行號

在重複表裡使用自動遞增行號中infopath2010與infopath2007有點不大一樣,2010版本已經刪除了position函式。不過沒關係,2010一樣支援行號的。使用下面的表示式 count preceding sibling local name yourrepeatinggroupna...