mydropdown (下拉框)、field1 (文本框)
using Microsoft.Office.InfoPath;
using System;
using System.Xml;
using System.Xml.XPath;
namespace Getdatanamespace {
public partial class FormCode {
public void InternalStartup() {
EventManager.XmlEvents["/my:myFields/my:mydropdown"].Changed
+= new XmlChangedEventHandler(mydropdown_Changed);
}
public void mydropdown_Changed(object sender, XmlEventArgs e) {
XPathNavigator form = MainDataSource.CreateNavigator();
// 1. 設置查詢參數:將下拉框新值 (ID) 寫入查詢字段
DataSources["MyDATASOURCE"].CreateNavigator()
.SelectSingleNode("dfs:myFields/dfs:queryFields/q:SharePointListItem_RW/q:ID", NamespaceManager)
.SetValue(e.NewValue);
// 2. 執行查詢 (調用 Web Service)
DataSources["MyDATASOURCE"].QueryConnection.Execute();
// 3. 讀取返回數據:從數據字段提取 Title
XPathNavigator resultNav = DataSources["MyDATASOURCE"].CreateNavigator();
XPathNavigator field1 = form.SelectSingleNode("/my:myFields/my:field1", NamespaceManager);
field1.SetValue(resultNav.SelectSingleNode(
"/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Title", NamespaceManager).Value);
}
}
}
| 階段 | XPath | 說明 |
|---|---|---|
| 查詢參數 | dfs:myFields/dfs:queryFields/q:SharePointListItem_RW/q:ID | 寫入下拉框選中的列表項 ID |
| 結果讀取 | /dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Title | 讀取返回項的 Title 欄位 |
用戶選擇下拉框
↓
Changed 事件觸發
↓
將 NewValue 寫入 MyDATASOURCE 查詢字段 ID
↓
QueryConnection.Execute() → 呼叫 SharePoint Web Service
↓
從返回數據字段讀取 Title
↓
寫入主數據源 field1 顯示