Постојат многу добри примери за ажурирање на сопствени листи преку пакети. Тука е уште еден.
Бизнис проблем: InfoPath формулар е дизајниран која им овозможува на корисниците да влезат во онлајн купување требувањата. PO официјално барање броеви треба да биде традиционален низа базирани целобројни вредности и се пресметуваат автоматски.
Бизнис решенија: Креирате сопствени Мос листа ги содржи две колони: "ControlField" and "ControlValue". Вредноста колона го содржи следно купување реквизиција број. Note that the generic "control" именување на конвенцијата обезбедува за идните контрола области во кои можат да се користат колку што е потребно.
Техничко решение: Создаде веб сервис посетена од страна на InfoPath клиент. На веб сервис се враќа назад на следно купување реквизиција број и надградби на вредноста на листа.
Научени лекции:
- Кога додавање на овој веб сервис како извор на податоци на InfoPath формулар, Најдов дека е неопходно да го конвертирате во УДЦ и чувајте го во податочна врска библиотека.
- Јас исто така, утврди дека е неопходно да им се овозможи крстот домен скриптирање преку централниот услуги администрација // апликација за управување со // форма сервер.
- Прв пат во форма Пробавте да пристапите до веб сервис, тоа трае некое време и по повод, тоа ќе Time Out. Јас си свиркавме со поставки во форма сервер да се прошири на истек на време поставки и што се чинеше да им помогне на.
Го кодот:
користење на Систем;
користење на System.Web;
користење на System.Web.Services;
користење на System.Web.Services.Protocols;
користење на Microsoft.SharePoint;
користење на System.Configuration;
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
јавноста класа PoService : System.Web.Services.WebService
{
јавноста PoService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
/// <резиме>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </резиме>
/// <се враќа></се враќа>
[WebMethod]
јавноста низа GetNextPoNumber()
{
низа SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
низа SpPoControlListName; // Name of the actual MOSS list containing the Po control.
SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();
низа nextPoReqNumber = "xyzzy";
користење на (SPSite site = нови SPSite(SpPoControlSiteName))
{
користење на (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists[SpPoControlListName];
foreach (Плукаат controlItem во currentList.Items)
{
ако (((низа)controlItem["ControlField"]).Еднакво("NextPoNumber"))
{
nextPoReqNumber = (низа)controlItem["ControlValue"];
int int_nextPoReqNumber;
int_nextPoReqNumber = Конвертирате.ToInt32(nextPoReqNumber);
int_nextPoReqNumber ;
controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}
} // Locating, reading and updating the PO number in the list.
} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")
се врати nextPoReqNumber;
}
}