У меня есть пользовательская страница со следующим ListFieldIterator :
<SharePoint:ListFieldIterator runat="server" ControlMode="Display" OnInit="listFieldIterator_Init" />
Вот событие Init:
protected void listFieldIterator_Init(object sender, EventArgs e)
{
ListFieldIterator listFieldIterator = sender as ListFieldIterator;
SPContext current = SPContext.Current;
SPFieldUrlValue value = new SPFieldUrlValue(current.ListItem[SPBuiltInFieldId.URL].ToString());
Uri uri = new Uri(value.Url);
using (SPWeb web = current.Site.OpenWeb(uri.AbsolutePath))
{
SPListItem item = web.GetListItem(uri.PathAndQuery);
if (null != item)
{
listFieldIterator.ItemContext = SPContext.GetContext(this.Context, item.ID, item.ParentList.ID, web);
}
}
}
Все отлично работает, если целевой элемент списка находится на том же сайте, что и страница. Но как только он указывает на другой сайт, появляются все поля, но все значения отображаются в следующем формате:
Не удалось отобразить столбец "Заголовок".
из-за ошибки в "Single
строка текста "Тип поля управления. См.
подробности в лог. Сообщение об исключении:
Список не существует Страница, которую вы
выбрано содержит список, который не
существовать. Возможно, он был удален
другой пользователь ..
Если я изменю ControlMode на Edit, значения отображаются правильно. Так как мне заставить его работать в режиме дисплея?