SharePoint 2010:更新View Xml(启用工具栏)

|| 我试图在列表视图上启用“视图”工具栏。但这似乎不起作用。我怎样才能得到正确的代码?
/// <summary>
/// Handles the Click event of the btnEnable control.
/// </summary>
/// <param name=\"sender\">The source of the event.</param>
/// <param name=\"e\">The <see cref=\"System.EventArgs\"/> instance containing the event data.</param>
private void btnEnable_Click(object sender, EventArgs e)
{
    using (SPWeb spWeb = new SPSite(tbSiteUrl.Text).OpenWeb())
    {
        SPList spList = spWeb.Lists[lbLists.SelectedItem.ToString()];
        foreach (SPView spView in spList.Views)
        {
            EnableToolbar(spView.Title, spList.Title, spWeb.Url);
        }
    }
}

/// <summary>
/// Enables the toolbar.
/// </summary>
/// <param name=\"viewName\">Name of the view.</param>
/// <param name=\"listName\">Name of the list.</param>
/// <param name=\"webUrl\">The web URL.</param>
private void EnableToolbar(string viewName, string listName, string webUrl)
{
    SPSecurity.RunWithElevatedPrivileges(() =>
                                             {
                                                 using (var spSite = new SPSite(webUrl))
                                                 {
                                                     using (SPWeb web = spSite.OpenWeb())
                                                     {
                                                         spSite.AllowUnsafeUpdates = true;

                                                         SPList spList = web.Lists[listName];
                                                         SPView spView = spList.Views[viewName];

                                                         XDocument xDocument =
                                                             XDocument.Parse(spView.GetViewXml());

                                                         XElement xElement =
                                                             xDocument.Element(\"View\").Element(\"Toolbar\");
                                                         xElement.RemoveAttributes();
                                                         xElement.SetAttributeValue(\"Type\", \"Standard\");
                                                         xElement.SetAttributeValue(\"ShowAlways\", \"TRUE\");

                                                         spView.SetViewXml(xDocument.ToString());
                                                         spView.Update();

                                                         spSite.AllowUnsafeUpdates = false;
                                                     }
                                                 }
                                             });
}
更新:
using (var spSite = new SPSite(webUrl))
{
    using (SPWeb web = spSite.OpenWeb())
    {
        spSite.AllowUnsafeUpdates = true;

        SPList spList = web.Lists[listName];
        SPView spView = spList.Views[viewName];

        spView.Toolbar =
            @\"<Toolbar Type=\"\"Standard\"\" ShowAlways=\"\"TRUE\"\"/>\";

        spView.Update();

        spSite.AllowUnsafeUpdates = false;
    }
}
更接近,但仍然不好。 这次,它确实修改了视图。我知道这是因为,第二次运行调试器时,我确实注意到SPView.Toolbar属性的值已更改。 但是,当我在SharePoint设计器中打开同一页面时,看不到“ 2”,但看到的默认值为:“ 3”。 除此之外,在浏览器中打开列表视图时,在列表视图页面上看不到工具栏。     
已邀请:
这是我必须做的才能使其工作。
/// <summary>
/// Enables the toolbar.
/// </summary>
/// <param name=\"viewName\">Name of the view.</param>
/// <param name=\"listName\">Name of the list.</param>
/// <param name=\"webUrl\">The web URL.</param>
private void EnableToolbar(string viewName, string listName, string webUrl)
{
    using (var spSite = new SPSite(webUrl))
    {
        using (SPWeb web = spSite.OpenWeb())
        {
            spSite.AllowUnsafeUpdates = true;

            SPList spList = web.Lists[listName];
            SPView spView = spList.Views[viewName];

            SPLimitedWebPartManager spLimitedWebPartManager = 
                web.GetLimitedWebPartManager(spView.Url, PersonalizationScope.Shared);

            foreach (WebPart webPart in spLimitedWebPartManager.WebParts)
            {
                if (webPart.GetType().Name.Equals(\"XsltListViewWebPart\"))
                {
                    try
                    {
                        MethodInfo ensureViewMethod = webPart.GetType().GetMethod(\"EnsureView\",
                                                                                  BindingFlags.Instance |
                                                                                  BindingFlags.NonPublic);
                        object[] ensureViewParams = {};
                        ensureViewMethod.Invoke(webPart, ensureViewParams);

                        FieldInfo viewFieldInfo = webPart.GetType().GetField(\"view\",
                                                                             BindingFlags.NonPublic |
                                                                             BindingFlags.Instance);

                        var view = viewFieldInfo.GetValue(webPart) as SPView;

                        Type[] toolbarMethodParamTypes = {Type.GetType(\"System.String\")};
                        MethodInfo setToolbarTypeMethod = view.GetType().GetMethod(\"SetToolbarType\",
                                                                                   BindingFlags.Instance |
                                                                                   BindingFlags.NonPublic, null,
                                                                                   toolbarMethodParamTypes, null);
                        object[] setToolbarParam = {\"ShowToolbar\"};
                        setToolbarTypeMethod.Invoke(view, setToolbarParam);

                        view.Update();
                    }
                    catch { }
                }
            }

            spSite.AllowUnsafeUpdates = false;
        }
    }
}
    
请改用
SPView.Toolbar
属性。该属性需要“ 6”个CAML元素,并替换基础CAML片段中的特定XML节点。     

要回复问题请先登录注册