C# 以编程方式在XsltListViewWebPart上显示添加新项

C# 以编程方式在XsltListViewWebPart上显示添加新项,c#,sharepoint,sharepoint-2010,C#,Sharepoint,Sharepoint 2010,我试图在现有XLSTListViewWeb部件上显示“添加新项目”链接。但是下面的代码不起作用。我在这里找到了这个: 但是工具栏节点总是空的 我喜欢这样: using (SPLimitedWebPartManager mgrPageManager = pageOrganisation.GetLimitedWebPartManager(PersonalizationScope.Shared)) {

我试图在现有XLSTListViewWeb部件上显示“添加新项目”链接。但是下面的代码不起作用。我在这里找到了这个:

但是工具栏节点总是空的

我喜欢这样:

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 { }
        }