我正在尝试在我的列表视图上启用视图工具栏。但它似乎不起作用。我怎样才能得到正确的代码?
/// <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 设计器中打开同一页面时,我看不到<Toolbar Type="Standard" ShowAlways="TRUE"/>
但我看到的默认值为:<Toolbar Type="Standard"/>
。
除此之外,当我在浏览器中打开列表视图时,我看不到列表视图页面上的工具栏。