2009-04-22 130 views
1

我自定義頁面文檔庫中顯示的字段(顯示的表格單擊網站操作 - >所有網站內容 - >頁面)。在Sharepoint中自定義頁面視圖

有人比我知道更多關於共享點的建議,我應該刪除不想從默認視圖中以編程方式激活功能的字段,所以我編寫了這種代碼像一個非常不合理的解決方案,也不起作用。

SPWeb web = properties.Feature.Parent as SPWeb; 

     if (web != null) 
     { 
      SPList list = web.Lists["Pages"] as SPList; 
      if (list != null) 
      { 
       foreach (SPField field in list.Fields) 
       { 
        if (field.Title != "Type" && 
         field.Title != "Name" && 
         field.Title != "Modified" && 
         field.Title != "Checked Out To" && 
         field.Title != "Page Layout") 
        { 
         if (list.DefaultView.ViewFields.Exists(field.InternalName)) 
         { 
          list.DefaultView.ViewFields.Delete(field);         
         } 
        } 
       } 

       list.DefaultView.Update(); 
      } 
     } 
    } 

該代碼明確執行激活的功能,所以我顯然做錯了什麼。我已經尋找了解決方案,所以我很抱歉,如果我錯過了谷歌或這個網站,這是非常明顯的東西。

回答

2

這是因爲list.DefaultView.ViewFields的更改超出了範圍。在調用Update()之前,正在從數據庫刷新集合。 Try:

if (list != null) 
{ 
    SPView view = list.DefaultView; 

    foreach (SPField field in list.Fields) 
    { 
     if (field.Title != "Type" && 
      ... 
      field.Title != "Page Layout") 
     { 
      if (view.ViewFields.Exists(field.InternalName)) 
      { 
       view.ViewFields.Delete(field);         
      } 
     } 
    } 

    view.Update(); 
} 
相關問題