1

リスト用に2つのビューを作成しました。別のログインで、別のビューをデフォルトとして設定したいと思います。C#コードを使用してこれを実行したい

例えば:

ビューは次のとおりです。

  1. 全てのアイテム
  2. UserView

それで

管理者がログインした場合、リストのデフォルトビューはAllItemsです

ユーザーがログインした場合、リストのデフォルトビューはUserViewです

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;
                }

上記のコードはエラーになります:「コードが最適化されているか、ネイティブフレームが呼び出しスタックの最上位にあるため、式を評価できません。」

4

2 に答える 2

5

SPViewオブジェクトでもUpdateメソッドを呼び出す必要があります。

SPView yourView = CurrentList.Views[UserView];
yourView.DefaultView = true;
yourView.Update();
于 2012-08-04T22:02:07.063 に答える
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();
        }
    }
于 2014-04-24T15:50:07.483 に答える