SharePoint - Как вставлять новые элементы с помощью веб-службы list?
-
01-07-2019 - |
Вопрос
У меня есть список с 2 текстовыми полями и полем выбора.Как мне использовать веб-службу Lists.asmx для вставки нового элемента?Я могу сделать веб-ссылку на сервис lists.asmx, так что вы можете предположить, что это известно.
Я хотел бы получить полный пример, включающий код и XML для запроса CAML.В идеале в образце должен использоваться C #.
Решение
Использование веб-службы списков для вставки элемента в список SharePoint действительно может быть сложным.Поскольку этот метод имеет вид:XML входит, XML выходит, может быть трудно получить правильные параметры.
Сначала вы должны взглянуть на определение списка.Его можно получить с помощью метода getList(), как показано ниже:
XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);
Здесь важны названия полей и их типы данных.Имена полей никогда не будут совпадать с теми, которые вы видите в графическом интерфейсе SharePoint.Хорошим примером является поле Заголовка, которое используется для первого поля списка.
Теперь, когда вы это знаете, вы можете создать запрос для перехода в SharePoint.Пример:
<Batch OnError="Continue">
<Method ID="1" Cmd="New">
<Field Name="Title">Abcdef</Field>
<Field Name="Project_x0020_code">999050</Field>
<Field Name="Status">Open</Field>
</Method>
</Batch>
Элемент Batch является корневым элементом XML-файла.Внутрь вы можете поместить различные Методы.Они должны получить уникальный идентификатор (который используется для отправки вам сообщения об ошибках) и команду, которая может быть, например, "New" или "Update".Внутри Метода вы помещаете элементы Field, которые задают значение для каждого поля.Например, поле Title получает значение "Abcdef".Будьте осторожны и используйте точное имя, поскольку оно возвращается getList().
Чтобы выполнить запрос в SharePoint, используйте метод UpdateListItems():
XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);
Возвращаемое значение представляет собой XML-фрагмент, содержащий статус каждого обновления.Например:
<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<Result ID="1,New">
<ErrorCode>0x00000000</ErrorCode>
<z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6"
ows_Title="Abcdef"
ows_Project_x0020_code="999050"
ows_Status="Open"
ows_LinkTitleNoMenu="Abcdef"
ows_LinkTitle="Abcdef"
ows_ID="1005"
...
xmlns:z="#RowsetSchema" />
</Result>
</Results>
Вы можете разобрать это и посмотреть на код ошибки, чтобы увидеть, какие методы завершились с ошибкой.
На практике я создал класс-оболочку, который заботится обо всех грязных деталях за меня.К сожалению, это принадлежит моему работодателю, поэтому я не могу поделиться им с вами.
Этот класс-оболочка является частью внутренней утилиты, которая используется для извлечения информации из базы данных нашего проекта и публикации ее в SharePoint.Поскольку он был разработан во времена компании, я не имею права публиковать его здесь.