如何将自定义视图设置为SharePoint列表的默认视图
本文关键字:视图 SharePoint 列表 默认 设置 自定义 | 更新日期: 2024-09-25 06:41:02
我已经为列表创建了两个视图,现在我想在不同的登录时将Different视图设置为默认视图。我想用c#代码来做这件事
例如:
视图如下:
- 所有项目
- 用户视图
然后
如果管理员登录,则列表的默认视图为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;
}
上面的代码是给出错误:"无法计算表达式,因为代码已优化或本地帧位于调用堆栈的顶部。"
您也必须在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();
}
}