C# 以编程方式在XsltListViewWebPart上显示添加新项
我试图在现有XLSTListViewWeb部件上显示“添加新项目”链接。但是下面的代码不起作用。我在这里找到了这个: 但是工具栏节点总是空的 我喜欢这样:C# 以编程方式在XsltListViewWebPart上显示添加新项,c#,sharepoint,sharepoint-2010,C#,Sharepoint,Sharepoint 2010,我试图在现有XLSTListViewWeb部件上显示“添加新项目”链接。但是下面的代码不起作用。我在这里找到了这个: 但是工具栏节点总是空的 我喜欢这样: using (SPLimitedWebPartManager mgrPageManager = pageOrganisation.GetLimitedWebPartManager(PersonalizationScope.Shared)) {
using (SPLimitedWebPartManager mgrPageManager = pageOrganisation.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
SPList organisations = oHomeWeb.GetSafeListByName(SponsoringCommon.Constants.LISTNAMES_ORGANISATIONS2);
XsltListViewWebPart lvwpOrganisation = mgrPageManager.WebParts[idWebPartRootOrganisation] as XsltListViewWebPart;
Functions.SetToolbarType(lvwpOrganisation, "Freeform");
mgrPageManager.SaveChanges(lvwpOrganisation);
}
public static void SetToolbarType(XsltListViewWebPart lvwp, string viewType)
{
try
{
MethodInfo ensureViewMethod = lvwp.GetType().GetMethod("EnsureView", BindingFlags.Instance | BindingFlags.NonPublic);
object[] ensureViewParams = { };
ensureViewMethod.Invoke(lvwp, ensureViewParams);
FieldInfo viewFieldInfo = lvwp.GetType().GetField("view", BindingFlags.NonPublic | BindingFlags.Instance);
SPView view = viewFieldInfo.GetValue(lvwp) as SPView;
Type[] toolbarMethodParamTypes = { Type.GetType("System.String") };
MethodInfo setToolbarTypeMethod = view.GetType().GetMethod("SetToolbarType", BindingFlags.Instance | BindingFlags.NonPublic, null, toolbarMethodParamTypes, null);
object[] setToolbarParam = { viewType }; //set the type here
setToolbarTypeMethod.Invoke(view, setToolbarParam);
view.Update();
}
catch { }
}
这在SP2013中非常有效!我不必使用Web部件管理器来更改工具栏。。。只是SetToolBarType()方法完成了这个任务。
using (SPLimitedWebPartManager mgrPageManager = pageOrganisation.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
SPList organisations = oHomeWeb.GetSafeListByName(SponsoringCommon.Constants.LISTNAMES_ORGANISATIONS2);
XsltListViewWebPart lvwpOrganisation = mgrPageManager.WebParts[idWebPartRootOrganisation] as XsltListViewWebPart;
Functions.SetToolbarType(lvwpOrganisation, "Freeform");
mgrPageManager.SaveChanges(lvwpOrganisation);
}
public static void SetToolbarType(XsltListViewWebPart lvwp, string viewType)
{
try
{
MethodInfo ensureViewMethod = lvwp.GetType().GetMethod("EnsureView", BindingFlags.Instance | BindingFlags.NonPublic);
object[] ensureViewParams = { };
ensureViewMethod.Invoke(lvwp, ensureViewParams);
FieldInfo viewFieldInfo = lvwp.GetType().GetField("view", BindingFlags.NonPublic | BindingFlags.Instance);
SPView view = viewFieldInfo.GetValue(lvwp) as SPView;
Type[] toolbarMethodParamTypes = { Type.GetType("System.String") };
MethodInfo setToolbarTypeMethod = view.GetType().GetMethod("SetToolbarType", BindingFlags.Instance | BindingFlags.NonPublic, null, toolbarMethodParamTypes, null);
object[] setToolbarParam = { viewType }; //set the type here
setToolbarTypeMethod.Invoke(view, setToolbarParam);
view.Update();
}
catch { }
}