以编程方式更新sharepoint列表视图

时间:2010-01-12 12:42:59

标签: sharepoint moss wss

我有一个内联代码的aspx页面,我试图通过将view的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 个答案:

答案 0 :(得分:1)

  1. 您在此处所做的是修改网站所有用户的视图定义,而不仅仅是页面的当前呈现实例。这就是为什么简单的访问者无法改变它(他们没有在网上拥有这样的权限)
  2. 如果你想做某事,使用“SystemAccount”令牌,你不仅要做“使用SPSite,使用SPWeb”,还要使用“强大的”SPWeb对象找到列表和视图
  3. 您可能需要考虑使用ListViewByQuery类http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.listviewbyquery.aspx
  4. ,而不是在运行时修改视图定义。
相关问题