2010-01-12 66 views
1

我有一個aspx頁面,其中我嘗試通過將視圖的查詢屬性設置爲我的CAML查詢以編程方式更新視圖。當我以管理員用戶運行一切作品完美的看法得到更新成功,但當我與屬於訪問者組的用戶登錄並具有隻讀訪問,然後我得到一個錯誤view.Update()行說,「無法評估表達式,因爲代碼已經優化或本地框架位於調用堆棧頂部「。 我已經嘗試運行與ElevatedPrivileges這個代碼塊,但沒有得到任何運氣...(以編程方式更新SharePoint的列表視圖

以下是我的代碼,讓你更清楚

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. 你在這裏做的是修改網站所有用戶的視圖定義,而不僅僅是頁面當前的渲染實例,這就是爲什麼簡單的訪問者不能改變它(他們沒有這樣的權限web)
  2. 如果您想要執行某些操作,使用「SystemAccount」令牌,您不僅可以執行「使用SPSite,使用SPWeb」,還可以使用「強大」SPWeb對象查找列表和視圖。
  3. 取而代之在運行時修改視圖定義時,您可能需要考慮使用ListViewByQuery類http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.listviewbyquery.aspx
相關問題