Как вставить значение запроса в качестве параметра в конструкторе SharePoint?
-
20-08-2019 - |
Вопрос
Я пытаюсь создать источник данных в SharePoint Designer, который подключается к списку SharePoint через веб-службы XML.Я создал источник данных и подключился к соответствующему списку.Я могу просмотреть все данные с помощью GetListItems и хочу отфильтровать их с помощью параметра запроса.
Параметр запроса принимает XmlNode, и когда я помещаю его в качестве значения, я получаю ошибку:
<Query>
<Where>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">Foo</Value>
</Eq>
</Where>
</Query>
Конечно, я не ввел ни табуляции, ни новой строки, так как в SharePoint Designer у меня есть только однострочное поле ввода.Я получаю сообщение об ошибке с этим запросом:
Сервер вернул неспецифическую ошибку при попытке получить данные из источника данных.Проверьте формат и содержание вашего запроса и попробуйте еще раз.Если проблема сохраняется, свяжитесь с администратором сервера.
Я просто хочу отфильтровать набор результатов элементов списка, чтобы в поле «Заголовок» было указано «Foo».Можно ли это сделать в SharePoint Designer?
Обновлять:экранирование < и > таким образом также не удается:
<Query><Where><Eq><FieldRef Name="Title" /><Value Type="Text">Foo</Value></Eq></Where></Query>
Обновлять:Похоже, это известная проблема с компонентами SoapDataSource и вызовами SOAP.Судя по всему, они перекодируют < и > перед отправкой.Приведенный обходной путь — сохранить источник данных без параметра запроса, а затем добавить его на страницу и создать фильтр в диалоговом окне «Общие задачи просмотра данных».Мне удалось заставить это работать, используя следующую строку фильтра:
[@ows_Title = 'Foo']
К сожалению, это мне не очень помогает, поскольку я добавляю представление данных (показывающее данные), а не источник данных, который я могу использовать для указания других элементов управления (например, раскрывающийся список).
Я все еще ищу хорошее решение, которое позволило бы мне разместить источник данных с помощью SharePoint Designer.
Решение
В SharePoint Designer существует ошибка.Вы не можете передать объект Query в SOAPDataSource таким образом — XML будет перекодирован.Вы ничего не можете сделать, чтобы это исправить, кроме как использовать Visual Studio.
Я сообщу вам, если когда-нибудь появится исправление.
Если кто-то хочет процитировать этот ответ в новом ответе, я приму этот ответ.
Другие советы
Вы XML-кодировали запрос?Я считаю, что вам нужно кодировать такие символы, как <, > и ", чтобы они были допустимыми XML, например.:
<Query><Where>
и
<FieldRef Name="Title" />
Этот показывает, как переменные можно использовать для решения аналогичной проблемы.
Поработав с полем «Заголовок списка», он не возвращает мне значений, если я не использовал «Содержит».
Однако это может не исправить вашу ошибку.