c#替换SharePoint列表项的默认New / Edit / Disp webparts

时间:2014-07-02 22:31:34

标签: c# sharepoint sharepoint-2010

目前,我有一个包含自定义webpart的sharepoint解决方案,用于sharepoint列表的New / Edit / Disp表单。截至目前,我通过手动导航到这些页面并通过gui插入这些webpart来指向列表。我现在的问题是,如何通过C#自动执行此过程?是否可以用我自己的自定义webparts替换默认列表项表单?根据{{​​3}}链接,我的尝试如下。

我创建了一个事件接收器来处理这个

代码:

    public override void FeatureInstalled(SPFeatureReceiverProperties properties)
    {
        using (SPSite sp_Site = new SPSite("http://root/site/Lists"))
        {
            string err = string.Empty;
            using (SPWeb sp_Web = sp_Site.OpenWeb())
            {
                XmlTextReader reader = new XmlTextReader(new StringReader(sp_Web.GetFileAsString("http://root/_catalogs/wp/myWebPart.webpart")));
                SPLimitedWebPartManager wpm = sp_Web.GetLimitedWebPartManager("http://root/site/Lists/MyList/DispForm.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);

                WebPart wp = (WebPart)wpm.ImportWebPart(reader, out err);
                wpm.AddWebPart(wp, "Main", 0);
                wpm.SaveChanges(wp);
            }
        }

我目前无法调试此错误,因为错误Error occurred in deployment step 'Add Solution': <nativehr>0x80070002</nativehr><nativestack></nativestack>

我这样做是否正确?还有另外一种方法吗?任何意见都非常感谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我相信你并没有压倒正确的事件。

尝试覆盖FeatureActivated,因为只有在激活功能后,Web部件才可用。

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    // do stuff  
}

如果在部署解决方案时仍遇到错误,请尝试以下操作:

  • close visual studio
  • 重新启动&#34; Sharepoint 2010用户代码主机&#34;服务
  • 重新启动&#34; Windows Management Instrumentation&#34;服务
  • 打开visual studio并尝试再次部署您的解决方案