Есть много хороших примеров обновления пользовательских списков через SDK. Вот еще один.
Бизнес-проблемы: Формы InfoPath был разработан, что позволяет пользователям вводить онлайн купить заявок. PO реквизиции, цифры должны быть традиционной последовательности на основе целочисленные значения и рассчитывается автоматически.
Бизнес-решение: Создание настраиваемого списка Мосс, содержащий два столбца: «ControlField" и «ControlValue». Столбец значение содержит следующий номер заявки на покупку. Обратите внимание, что универсальный «контроль" именования обеспечивает для будущего управления полей, которые могут быть использованы при необходимости.
Техническое решение: Создание веб-службы, доступ клиента InfoPath. Веб-служба возвращает обратно следующий номер заявки покупки и обновляет значение из списка.
Уроки:
- При добавлении этой веб-службы в качестве источника данных для формы InfoPath, Я счел необходимым преобразовать его в udc и хранить его в библиотеку подключений к данным.
- Я также счел необходимым для включения междоменного сценария через Центральный Услуги администрации // Управление приложениями // Форма Конфигурация сервера.
- Впервые форме пытался получить доступ к веб-службе, Это занимает некоторое время и по случаю, Это будет время ожидания. Я fiddled с параметрами конфигурации сервера формы расширить параметры времени ожидания и, казалось, чтобы помочь.
Код:
использование Система;
использование System.Web;
использование System.Web.Services;
использование System.Web.Services.Protocols;
использование Microsoft.SharePoint;
использование System.Configuration;
[WebService(Пространство имен = «http://www.Conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
государственные класс PoService : System.Web.Services.WebService
{
государственные PoService () {
//Раскомментируйте следующую строку при использовании разработаны компоненты
//Метод 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 currentList = web. Списки[SpPoControlListName];
по каждому элементу (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/Мидзухо")
возвращение nextPoReqNumber;
}
}