替换SharePoint列表项默认的New/Edit/Disp webpart

本文关键字:Edit Disp webpart New SharePoint 列表 默认 替换 | 更新日期: 2023-09-27 18:11:16

目前我有一个sharepoint解决方案,包含sharepoint列表的新建/编辑/删除表单的自定义webpart。到目前为止,我通过手动导航到这些页面并通过gui插入它们来将列表指向这些webpart。我现在的问题是,我如何通过c#自动化这个过程?是否可以用我自己的自定义webparts替换默认的列表项表单?我的尝试如下,根据这个链接。

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

代码:

    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>

我这样做对吗?还有别的办法吗?

替换SharePoint列表项默认的New/Edit/Disp webpart

我相信在这种情况下您没有重写正确的事件。

尝试重写FeatureActivated,因为web部件只有在功能被激活后才可用。

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

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

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