Є багато добрих прикладів оновлення настроювані списки розсилки за допомогою SDK. Ось ще один.
Бізнес-завдання: Форма InfoPath був розроблений, що дозволяє користувачам вводити онлайн придбати заявки. PO реквізиції номери повинні бути традиційні послідовності на основі цілі числа та розраховується автоматично.
Бізнес-рішення: Створити Настроюваний список МОСС містить два стовпці: "ControlField" і "ControlValue". Стовпці «значення» містить на наступний номер заявки на придбання. Зверніть увагу, що видових "контроль" іменуванні забезпечує для майбутніх керуючих полів, які можуть бути використані в міру необхідності.
Технічні рішення: Створити веб-сервіс до програми InfoPath клієнта. Веб-служба повертає назад на наступний номер заявки на придбання та оновлює значення зі списку.
Вивчені уроки:
- Під час додавання веб-служба як джерело даних для форми InfoPath, Я визнав за необхідне перетворити його на УДК і зберігати його в бібліотеці зв'язків даних.
- Я також визнав за необхідне дозволити міждоменний сценарії через Центральний служби адміністрування // керування додатками // форми конфігурації сервера.
- Вперше у формі намагалися отримати доступ до веб-служби, Це займе якийсь час і з нагоди, Це було б тайм-аут. Я грав на скрипці з настройками у вигляді сервер конфігурації розширити параметри часу очікування і які, здавалося, допомогти.
Код:
за допомогою Система;
за допомогою System. Web;
за допомогою System.Web.Services;
за допомогою System.Web.Services.Protocols;
за допомогою Microsoft.SharePoint;
за допомогою System.Configuration;
[Веб-служба(Простір імен = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
громадських клас PoService : System.Web.Services.Веб-служба
{
громадських PoService () {
//Розкоментуйте наступний рядок, якщо за допомогою розроблений компонентів
//InitializeComponent();
}
/// <резюме>
/// Отримати наступний PO номер від po номер керування списком sharepoint.
/// Приріст PO номер в цьому списку.
/// </резюме>
/// <Повертає></Повертає>
[WebMethod]
громадських рядок GetNextPoNumber()
{
рядок SpPoControlSiteName; // Ім'я фактичні МОХОМ сайту, на якому списку керування PO.
рядок SpPoControlListName; // Ім'я фактичні МОХОМ список, який містить керування Po.
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();
}
} // Розміщення, читання та оновлення PO номер у списку.
} // за допомогою spweb веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/mizuho")
повернення nextPoReqNumber;
}
}