我已创建2个View for List现在我想在不同的Login上将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;
}
上面的代码是给出错误:“无法评估表达式,因为代码已经过优化,或者本机框架位于调用堆栈之上。”
答案 0 :(得分:5)
您还必须在SPView对象上调用Update方法。
SPView yourView = CurrentList.Views[UserView];
yourView.DefaultView = true;
yourView.Update();
答案 1 :(得分: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();
}
}