有許多很好的例子的更新通過 SDK 的自訂清單. 這裡是另一個.
業務問題: InfoPath 表單而設計使使用者能夠輸入線上購買請購單. 大埔徵用的數位應該是傳統序列基於整數值和自動計算.
業務解決方案: 創建一個包含兩列的自訂 MOSS 清單: "ControlField" 和"ControlValue". 值列包含下一個採購請購單編號. 請注意該泛型"控制" 對於未來控制欄位,可根據需要提供了命名約定.
技術解決方案: 創建的 InfoPath 用戶端存取的 web 服務. 在 web 服務返回返回下一個採購請購單編號和更新清單中的值.
吸取的經驗教訓:
- 將此 web 服務作為資料來源添加到 InfoPath 表單時, 我發現有必要將它轉換為 udc 並將其存儲到資料連線庫.
- 此外發現它有必要啟用跨域腳本通過中央服務管理 // 應用程式管理 // 表單伺服器配置.
- 第一次表單試圖訪問的 web 服務, 它需要一段時間,有時, 它將超時時間. 我擺弄設置在表單的伺服器配置中,展開超時設置,這似乎説明.
代碼:
使用 系統;
使用 System.Web;
使用 System.Web.Services;
使用 System.Web.Services.Protocols;
使用 Microsoft.SharePoint;
使用 System.Configuration;
[Web 服務(Namespace = "HTTP://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
公眾 類 PoService : System.Web.Services.Web 服務
{
公眾 PoService () {
//取消注釋以下行如果使用設計的部件
//InitializeComponent();
}
/// <摘要>
/// 從 sharepoint po 號碼控制清單獲得下一個 PO 編號.
/// 該清單中的增量 PO 編號.
/// </摘要>
/// <返回></返回>
[WebMethod]
公眾 字串 GetNextPoNumber()
{
字串 SpPoControlSiteName; // 實際的 MOSS 網站承載的大埔控制清單名稱.
字串 SpPoControlListName; // 包含寶控制項的實際苔蘚清單的名稱.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
字串 nextPoReqNumber = "xyzzy";
使用 (SPSite 網站 = 新增功能 SPSite(SpPoControlSiteName))
{
使用 (SPWeb web = 網站。OpenWeb())
{
SPList currentList = web。清單[SpPoControlListName];
foreach (SPItem controlItem 在中 currentList.Items)
{
如果 (((字串)controlItem["ControlField"]).合計("NextPoNumber"))
{
nextPoReqNumber = (字串)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = 轉換.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] int_nextPoReqNumber =;
controlItem.Update();
}
} // 定位, 讀取和更新採購訂單編號清單中.
} // 使用 spweb web = site.openweb()
} // 使用 spsite 網站 = 新 spsite("HTTP://本地主機/瑞穗")
返回 nextPoReqNumber;
}
}