苔蘚: 更新自訂清單

有許多很好的例子的更新通過 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;

}
}

一個念頭在“苔蘚: 更新自訂清單

  1. KSP 寫道::
    嗨保羅,
    我們有類似的情況你一提,但問題是我想要在負載平衡的伺服器上使用此 web 服務。因此,如何在這種情況下處理併發請求或如何使新的請求等待和只有一個請求應更新直到清單編號然後所有其他請求應在問題請讓我知道如何去實現這一目標.
    提前謝謝.
    答覆

留言

您的電子郵件地址不會被公開. 必需的地方已做標記 *