使用Feature与AllUsersWebPart节点的SharePoint问题

时间:2009-05-14 11:09:26

标签: sharepoint caml

我有一个SharePoint功能,可以安装新的页面布局。

此功能的要求是使用默认Web部件安装页面布局,以便当用户运行“创建页面”操作时,页面将创建为页面上已有Web部件。

所以,我尝试在页面的元素定义中添加一个AllUsersWebPart节点,例如。

<Elements>
    ...
    <Module ...>
        ...
        <File ...>
            <AllUsersWebPart ...>
                ...
            </AllUsersWebPart>
        </File>
        ...
    </Module>
</Elements>

安装,部署功能等,当然得到了有用的'没有为此对象定义的无参数构造函数'错误 - 我最有可能在Elements.xml中定义问题。

现在我遇到的真正问题是我尝试从功能定义中删除AllUsersWebPart部分(以便在创建时页面上没有Web部件),并且由于SharePoint中的一个奇妙的错误, Web部件仍然是为页面布局定义的,即使功能定义有所不同 - 我在http://sharepointblog.buus-oestergaard.dk/post/Default-webparts-in-sharepoint-pagelayouts.aspx(第2点)找到了一些有关此内容的详细信息。

我尝试升级&amp;删除/重新安装该功能但不起作用 - 如何从功能/内容数据库中删除此Web部件,以便我可以使用该功能只安装页面布局或在功能中放入正确的Web部件定义?

2 个答案:

答案 0 :(得分:1)

好的,我的页面布局正常工作,这些是我采取的步骤,以防有用:

1在Web部件页维护模式下编辑页面布局:

http://<server name>/_catalogs/masterpage/<page name>.aspx?contents=1

从那里删除所有Web部件实例。

2在Designer中打开布局(在服务器上)&amp;确保WebPartZone / ZoneTemplate为空。检查完毕后,请确保页面布局设置为已批准。

此后页面布局可用 - 我能够删除&amp;重新安装我的页面布局功能没有任何问题。

看起来Web部件定义保留在数据库中,以便在更新/重新安装功能时,它们已经链接到页面/ Web部件区域。对此进行排序可能应该在页面布局功能中的功能接收器中的代码中完成,如果我开始写这个我会在某处发布它...

答案 1 :(得分:0)

卸载该功能时,您是否确保从母版页/ pagelayout目录中删除了pagelayout?

用于添加内容文件(pagelayout)的要素元素在停用要素时不会将其删除。