МОС: Актуализиране на списък по избор

Има много добри примери за актуализиране на списъци по избор чрез SDK. Ето още един.

Бизнес проблем: InfoPath формуляр е проектиран, че позволява на потребителите да въведете онлайн покупка искания. PO заявки номера трябва да бъде традиционно последователност базирани целочислени стойности и изчислява автоматично.

Бизнес решение: Създаване на потребителски списък на Мос, съдържащ две колони: "ControlField" и "ControlValue". Стойност на колоната съдържа следващия номер на заявка за покупка. Обърнете внимание, че родово "контрол" именуване конвенция предвижда бъдещи контрол полета, които могат да се използват, ако е необходимо.

Техническо решение: Създаване на уеб услуга, достъпна на InfoPath клиент. Уеб услугата връща обратно следващия номер на заявка за покупка и актуализира стойността на списъка.

Поуките:

  • При добавянето на тази уеб услуга като източник на данни към формуляра на InfoPath, Открих, че е необходимо да го конвертирате в udc и да го съхранява в библиотека за връзка с данни.
  • Аз също, че е необходимо да разрешите кръст скриптове чрез централните служби администрация // управление на приложения // форма сървър конфигурация.
  • Първи път формуляра се опита за достъп до уеб услугата, отнема известно време и по повод, Тя ще време вън. Аз fiddled с настройките в конфигурацията на сървъра на формата за разширяване на настройките на изчакване и този изглеждам към помагам.

Код:

използване на Система;
използване на System.Web;
използване на System.Web.Services;
използване на System.Web.Services.Protocols;
използване на Microsoft.SharePoint;
използване на System.Configuration;

[Уеб услугата(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
обществени клас PoService : System.Web.Services.Уеб услугата
{
обществени PoService () {

//Uncomment определителен член последователи линия, ако използвате проектирани компоненти
//InitializeComponent();
}

/// <Резюме>
/// Получи следващия номер на поръчка от sharepoint po контрол от списъка номер на.
/// Нарастване PO номер в този списък.
/// </Резюме>
/// <Връща></Връща>
[WebMethod]
обществени низ GetNextPoNumber()
{
низ SpPoControlSiteName; // Името на действителната Мос сайт, който подслонява PO контролен списък.
низ SpPoControlListName; // Името на списъка за действителната Мос, съдържащ контролата Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

низ nextPoReqNumber = "xyzzy";

използване на (SPSite сайт = нов SPSite(SpPoControlSiteName))
{
използване на (SPWeb уеб = сайт. OpenWeb())
{

Splist.Update() 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();
}

} // Намиране на, четене и актуализиране на PO номера в списъка.


} // използване на spweb web = site.openweb()
} // използвайки spsite сайт = нови spsite("http://Localhost/mizuho")

връщане nextPoReqNumber;

}
}

Една мисъл на тема "МОС: Актуализиране на списък по избор

  1. KSP написа:
    Здравей Пол,
    Имаме подобна ситуация какво се споменава, но проблемът е, искам да използвам тази уеб servie на натоварване баланс сървър.Следователно,Как да се справят concurrency заявки в този случай или как да направи ново искане за чакане и само едно искане трябва да актуализира списъка число до тогава всички други искания трябва да бъдат в que.Моля да ме уведомите как да се постигне това.
    Благодаря предварително.

Оставете отговор

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани *