2009-04-22 9 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(); 
      } 
     } 
    } 

私は明らかに何か間違っているので、コードは機能の起動時に実行されます。私はこれを解決する方法を模索してきたので、私は盲目的に明らかなGoogleやこのサイトで何かを逃してしまったことを謝罪します。

答えて

2

これは、list.DefaultView.ViewFieldsの変更が有効範囲外になっているためです。 Update()の呼び出しに達する前に、データベースからコレクションがリフレッシュされています。 試行:

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(); 
} 
関連する問題