2012-08-04 111 views
1

我已創建2查看列表現在我想將不同的視圖設置爲默認在不同的登錄。 我想做到這一點使用C#代碼如何將自定義視圖設置爲SharePoint列表的默認視圖?

例如:

意見如下:

  1. AllItems
  2. 用戶視圖

然後

如果ADM在登錄,然後列表的默認視圖是AllItems

如果然後列表的默認視圖用戶登錄的用戶視圖

我怎樣才能做到這一點使用C#代碼?

代碼段:

   SPUser LoggedInUser = web.CurrentUser; 

       SPList CurrentList = web.Lists[ListName]; 

       if (LoggedInUser.LoginName == LoginUser) 
       { 
        web.AllowUnsafeUpdates = true; 
        CurrentList.Views[AllItems].DefaultView = false; 
        CurrentList.Views[UserView].DefaultView = true; 
        CurrentList.Update();    // Error here 
        web.AllowUnsafeUpdates = false; 

       } 
       else if (LoggedInUser.LoginName == LoginAdmin) 
       { 
        web.AllowUnsafeUpdates = true; 
        CurrentList.Views[AllItems].DefaultView = true; 
        CurrentList.Views[UserView].DefaultView = false; 
        CurrentList.Update();    // Error here 
        web.AllowUnsafeUpdates = false; 
       } 

上面的代碼是給這個錯誤:「無法因爲代碼被優化或天然幀是在調用堆棧的頂部以評價表達」

回答

5

你也必須調用SPView對象的Update方法。

SPView yourView = CurrentList.Views[UserView]; 
yourView.DefaultView = true; 
yourView.Update(); 
2

我把這個方法在我的擴展方法

public static void SetAsDefaultView(this SPList self, string viewName) 
    { 
     if (!self.Views[viewName].DefaultView) 
     { 
      self.DefaultView.DefaultView = false; 
      self.Views[viewName].DefaultView = true; 
      self.Update(); 
     } 
    }