如何将自定义视图设置为SharePoint列表的默认视图

本文关键字:视图 SharePoint 列表 默认 设置 自定义 | 更新日期: 2024-09-25 06:41:02

我已经为列表创建了两个视图,现在我想在不同的登录时将Different视图设置为默认视图。我想用c#代码来做这件事

例如:

视图如下:

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

然后

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

上面的代码是给出错误:"无法计算表达式,因为代码已优化或本地帧位于调用堆栈的顶部。"

如何将自定义视图设置为SharePoint列表的默认视图

您也必须在SPView对象上调用Update方法。

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

我在扩展方法中保留了这个方法

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