Обновлять представление списка sharepoint программно - PullRequest
1 голос
/ 12 января 2010

У меня есть страница aspx со встроенным кодом, на которой я пытаюсь программно обновить представление, установив свойство Query представления для моего CAML-запроса. Когда я работаю с правами администратора, все работает отлично, представление обновляется успешно, но когда я вошел в систему с пользователем, который принадлежит к группе посетителей и имеет доступ только для чтения, я получаю сообщение об ошибке в строке view.Update (), в которой говорится:

"Невозможно оценить выражение, поскольку код оптимизирован или собственный фрейм находится над стеком вызовов"

Я уже пытался запустить этот блок кода с ElevatedPrivileges, но не получилось ... (

ниже приведен мой код, который сделает вас более понятным:

SPUserToken token = CurrentSite.SystemAccount.UserToken;   
  using (SPSite st=new SPSite(SPContext.Current.Web.Url,token))
   {
     st.AllowUnsafeUpdates = true;
       using (SPWeb wb=st.OpenWeb())
        {
          wb.AllowUnsafeUpdates = true;

            vwSearchResult.Query = Query;
             vwSearchResult.Update();
        }   
    }

1 Ответ

1 голос
/ 12 января 2010
  1. То, что вы здесь делаете, - это изменение определения представления для ВСЕХ пользователей сайта, а не только для текущего экземпляра рендеринга страницы. Вот почему простые посетители не могут изменить его (у них нет такого разрешения в сети)
  2. Если вы хотите что-то сделать, используя токен «SystemAccount», вам нужно не только выполнить «использование SPSite, используя SPWeb», но также найти список и представление с использованием «сильных» объектов SPWeb
  3. Вместо изменения определения представления во время выполнения, вы можете рассмотреть возможность использования класса ListViewByQuery http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.listviewbyquery.aspx
...