Иногда пользователям требуется изменить информацию в элементе списка SharePoint, который не редактируется для них, например, поле, которое скрыто в форме редактирования (в моем случае это был номер записи) ,Поиск элемента списка SharePoint по URL-адресу его формы отображения
Я решил создать небольшое приложение Windows GUI, которое администратор выполнил бы на сервере и внесет требуемое изменение. Тем не менее, самый простой сценарий, чтобы получить экземпляр SPListItem
я нашел:
- администратор вводит URL корневого сайта
- создается
SPSite
ojbect, используя данный URL:SPSite oSite=new SPSite(this.txtURL.text);
- админ вводит относительный URL в сети обязательной для заполнения
SPWeb
объекта создается вSPWeb oWeb = oSite.OpenWeb(this.txtWebUrl.text);
- выпадающий список ящик заполнен все названия списка из
oWeb.Lists
- admin выбирает список из списка и вводит идентификатор запрашиваемого элемента;
- необходимая
SPListItem
находится какoWeb.Lists[this.lstAllLists.selectedValue].GetItemById(this.txtItemId.value);
Это очень долгий путь, и администраторы не делать ничего, как сделать ввод, нажав и ожидания.
Они хотели бы скопировать URL-адрес формы отображения listitem (из веб-браузера или чей-то электронной почты), вставить его в инструмент обновления, а затем просто нажать «Найти его!».
Мне нужны подсказки, как это можно сделать.
Я знаю, что я мог бы, вероятно, разобрать URL-адрес с регулярным выражением, поскольку он обычно имеет форму http://server/sites/[somesite]/[someweb/somesubweb]/lists/[somelist]/forms/dispform.aspx?ID=[123]
, но существуют варианты - например, http://[server]/[DocumentLibrary]/Forms/RenamedDispForm.aspx?ID=[1234]
имеет совершенно другую структуру, чем первый пример.
Итак, вопрос в том, есть ли какой-нибудь простой способ найти SPListItem
по его URL? Реконструкция SPContext
из URL-адреса будет отличной.
EDIT: Только что узнал, что можно построить правильный SPSite
объект, передавая ему гораздо больше URL:
Dim oSite as New SPSite("http://server/sites/site/Lists/test/DispForm.aspx?ID=136")
Спасибо, очень полезно! Пользуясь этим, вы можете найти список по URL-адресу. Одна вещь, которую нужно добавить в эту функцию, - это убедиться, что вы удаляете любой объект SPSite или SPWeb, который вы создаете, если это не объект Current. (Http://msdn.microsoft.com/en-us/library/aa973248.aspx) – brentlightsey