C# 如何将自定义视图设置为SharePoint列表的默认视图?
我已经为列表创建了2个视图,现在我想在不同登录时将不同的视图设置为默认视图。 我想用c代码来实现这一点 例如:C# 如何将自定义视图设置为SharePoint列表的默认视图?,c#,list,sharepoint,listview,sharepoint-2010,C#,List,Sharepoint,Listview,Sharepoint 2010,我已经为列表创建了2个视图,现在我想在不同登录时将不同的视图设置为默认视图。 我想用c代码来实现这一点 例如: SPUser LoggedInUser = web.CurrentUser; SPList CurrentList = web.Lists[ListName]; if (LoggedInUser.LoginName == LoginUser) {
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;
}
意见如下:
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();
您还必须对SPView对象调用更新方法
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();
}
}
我将此方法保留在扩展方法中
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();
}
}