既存のXlstListviewwebpartに[新しいアイテムの追加]リンクを表示しようとしています。しかし、以下のコードは機能していません。私はこれをここで見つけました:http ://suryapulipati.blogspot.be/2011/08/sharepoint-2010-show-add-new-item-or.html
ただし、toolbarnodeは常にnullです
private void ShowAddOrganisationLinkOnHomePage(string webUrl)
{
Logger.LogDebug("NLSponsoringSiteConfigSponsoringCentralEventReceiver", "ConfigureOrganisationDashboard(SPWeb currentWeb)", "BEGIN");
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPFile pageOrganisation = null;
using (SPWeb oHomeWeb = new SPSite(webUrl).OpenWeb())
{
try
{
pageOrganisation = oHomeWeb.GetFile("default.aspx");
pageOrganisation.CheckOut();
string idWebPartRootOrganisation = "ID_RootOrganisation";
oHomeWeb.AllowUnsafeUpdates = true;
using (SPLimitedWebPartManager mgrPageManager = pageOrganisation.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
SPList organisations = oHomeWeb.GetSafeListByName(SponsoringCommon.Constants.LISTNAMES_ORGANISATIONS2);
XsltListViewWebPart lvwpOrganisation = mgrPageManager.WebParts[idWebPartRootOrganisation] as XsltListViewWebPart;
SPView oCustomView = organisations.Views[SponsoringCommon.Constants.VIEWS_ORGANISATION_DASHBOARD_NAME];
PropertyInfo nodeProp = oCustomView.GetType().GetProperty("Node", BindingFlags.NonPublic | BindingFlags.Instance);
XmlNode node = nodeProp.GetValue(oCustomView, null) as XmlNode;
XmlNode toolbarNode = node.SelectSingleNode("Toolbar");
if (toolbarNode != null)
{
if (!toolbarNode.Attributes["Type"].Value.Equals("Freeform"))
{
toolbarNode.Attributes["Type"].Value = "Freeform";
}
}
oCustomView.Update();
mgrPageManager.SaveChanges(lvwpOrganisation);
}
}
catch (Exception)
{
oHomeWeb.AllowUnsafeUpdates = false;
if (pageOrganisation != null) pageOrganisation.UndoCheckOut();
throw;
}
finally
{
pageOrganisation.CheckIn(string.Empty);
oHomeWeb.AllowUnsafeUpdates = false;
}
}
});
}