一個簡單的例子,包括一段簡短的代碼,在InfoPath 2010表單中下拉框的修 改事件裡從一個數據源獲取數據。
表單
樣例表單本身很簡單,只有兩個控件,如下圖所示:
在mydropdown下拉框屬性中,添加幾個值,為將要獲取的SharePoint列表中 已有的幾個列表項的ID。
另外,在浏覽器表單選項卡中,設置始終獲取數據。以便在下拉框值發生修 改時,自動獲取數據。
設置好表單布局後,點擊功能區“數據”選項卡中的“數據連接”,設置一 個數據源。
在彈出的“數據連接”對話框中,點擊“添加...”。打開數據連接向導對話 框。選擇“接收數據”。
下一步。選擇“SharePoint庫或列表”
下一步。輸入SharePoint網站地址。
下一步。選擇需要連接的列表。
下一步。選擇域。在下面的代碼中,我們會用到Title,所以這裡把它選中。
一路下一步,直到完成該向導。將我們的數據連接命名為 “MyDATASOURCE”。
選中下拉框控件,點擊功能區“開 發工具”選項卡下控件事件組中的“Changed事件”。
將打開VSTA集成開發環境。
代碼
下面的代碼中, InternalStartup()方法用於注冊下拉框的修改事件,mydropdown_Changed()方 法用於實際的從數據源獲取數據...
“MyDATASOURCE”是為了 獲取表單域field1的值,也就是來自SharePoint列表數據源(MyDATASOURCE)的 SharePoint列表項標題。
通過Web服務傳遞給數據源的參數是列表項ID, 由下拉框的當前值決定。
01 using Microsoft.Office.InfoPath;
02 using System;
03 using System.Xml;
04 using System.Xml.XPath;
05
06 namespace Getdatanamespace
07 {
08 public partial class FormCode
09 {
10
11 // 注意: 以下是 Microsoft InfoPath 所需的過程。
12 // 可以使用 Microsoft InfoPath 對其進行修改。
13 public void InternalStartup()
14 {
15 EventManager.XmlEvents ["/my:myFields/my:mydropdown"].Changed += new XmlChangedEventHandler(mydropdown_Changed);
16 }
17
18 public void mydropdown_Changed(object sender, XmlEventArgs e)
19 {
20 // 在此處編寫代碼,用於更 改主數據源。
21 XPathNavigator form = MainDataSource.CreateNavigator();
22
23 // 為Web服務調用和查詢連接准備參數
24 // 發送ID作為調用web服務的參數,用於訪問該數據源
25 DataSources["MyDATASOURCE"].CreateNavigator ().SelectSingleNode ("dfs:myFields/dfs:queryFields/q:SharePointListItem_RW/q:ID",Namespace Manager).SetValue(e.NewValue);
26 DataSources["MyDATASOURCE"].QueryConnection.Execute();
27
28 // 基於web服務的響應創建一個 navigator
29 XPathNavigator resultnav = DataSources["MyDATASOURCE"].CreateNavigator();
30
31 // 用web服務響應中的數據設置字段的值
32 XPathNavigator Field1 = form.SelectSingleNode ("/my:myFields/my:field1", NamespaceManager);
33 Field1.SetValue(resultnav.SelectSingleNode ("/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Title",Namesp aceManager).Value);
34
35 }
36 }
37 }
運行
代碼編寫完成後,可以直接通過F5運行,將自動打開表單預覽界面。
測試無誤後,就可以發布到SharePoint表單庫中了。
點擊左上角的“文件”選項卡,打開後台視圖。選擇“發布”下的 “SharePoint服務器”
跟隨向導,一步步的進行就可以了。本例中,我們選擇發布到表單庫。
完成!點擊“在浏覽器中打開此表單”。
在SharePoint中運行的樣子: