Да, вы можете сделать это, однако, это довольно сложно.
Теоретически вы можете вызвать метод "UpdateListItems" веб-службы Lists.asmx и передать пакетный оператор, но из-за реализации веб-службы Lists вы не можете использовать его в InfoPath. Вот почему вам нужно написать свой собственный веб-сервис, который обертывает метод UpdateListItems, чтобы вы могли использовать его с IP.
Если вы не знаете, как написать веб-службу (и разместить ее в SharePoint), воспользуйтесь функцией поиска StackOverflow или воспользуйтесь Google - множество отличных учебных пособий; -)
После запуска веб-службы необходимо добавить ссылку на службу в веб-службу http://myserver/_vti_bin/Lists.asmx, а затем создать следующий метод:
[WebMethod]
public void UpdateListItems(string listGuid, string xmlBatch)
{
var batch = new XmlDocument();
batch.LoadXml(xmlBatch);
//create an instance of the lists proxy client
var listSvc = listService = new ListsWebService.Lists();
//set the url of the client
listService.Url = "http://myserver/_vti_bin/Lists.asmx";
listSvc.UpdateListItems(listGuid, batch);
}
Обратите внимание, что если вы настраиваете URL-адрес listSvc, жестко закодированный (как в этом примере), вам необходимо убедиться, что список, в который вы хотите добавить папки, находится на том же сайте, что и URL-адрес. Если вы хотите сделать этот метод более универсальным (что я рекомендую вам сделать), вы можете просто передать URL-адрес SiteCollection в качестве параметра и установить listSvc.Url в SiteCollectionUrl + "_vti_bin / Lists.asmx".
После настройки вы можете создать подключение для передачи данных к только что созданному вами веб-сервису в InfoPath и настроить его следующим образом:
Поле «listName» на самом деле является GUID Списка - вы можете получить его через пользовательский интерфейс, нажав «Настройки библиотеки» - «Настройки политики управления информацией», а затем скопировать его из адресной строки в браузере. Пример:
{39d01277-4ba1-4589-90f8-c957b4b2dd09}
Поле «XML» содержит пакетный скрипт для создания папки. Вы можете объявить это статически, или, в вашем случае, вы можете построить его динамически, используя функцию concat (). В этом примере создается папка с именем «MyFolder» в корне библиотеки.
<Batch>
<Method ID='1' Cmd='New'>
<Field Name='ID'>New</Field>
<Field Name='FSObjType'>1</Field>
<Field Name='BaseName'>MyFolder</Field>
</Method>
</Batch>
Если вам нужны подпапки, это тоже возможно. В следующем примере будет создана папка с именем «MySubFolder» в папке «MyFolder».
<Batch>
<Method ID='1' Cmd='New'>
<Field Name='ID'>New</Field>
<Field Name='FSObjType'>1</Field>
<Field Name='BaseName'>MyFolder/MySubFolder</Field>
</Method>
</Batch>
Затем вы просто добавляете действие кнопки отправки, и все готово: -)
Также обратите внимание, что приведенный выше код является лишь примером (хотя и работает). Если вы используете его в рабочей среде, обязательно добавьте соответствующую регистрацию исключений, потому что она вам понадобится: -)
надеюсь, это поможет!