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

时间:2012-08-04 07:46:40

标签: c# list sharepoint listview sharepoint-2010

我已创建2个View for List现在我想在不同的Login上将Different视图设置为默认值。 我想用c#代码

来做这件事

例如:

观点如下:

  1. AllItems
  2. 用户视图
  3. 然后

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

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

2 个答案:

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