1

我已经为列表创建了 2 个视图现在我想在不同的登录上将不同的视图设置为默认值。我想使用 c# 代码来做到这一点

例如:

意见如下:

  1. 所有项目
  2. 用户视图

然后

如果管理员登录,则列表的默认视图是 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;
                }

上面的代码给出错误:“无法评估表达式,因为代码已优化或本机框架位于调用堆栈的顶部。”

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 回答