我有一个Sharepoint功能,其中包含一个设置列表模板,该模板由其他功能读取。列表必须有一个特定的名称才能使整个事情发挥作用,所以理想情况下我宁愿创建一个列表而不是列表模板。
我试图通过覆盖EventReceiver
方法来使用FeatureInstalled
类。它接收SPFeatureReceiverProperties
类型的参数。我查看了文档,看到一个属性UserCodeSite
引用了安装该功能的SPSite
,如果它是Site
范围的解决方案,它就在我的案件。这样我想写一段代码,从代码中包含的列表模板创建一个特定的列表。
SPWeb_object.Lists.Add(listName, "", SPListTemplate_object)
但是该属性为null,以及Feature
属性。所以我无法获取SPSite对象,我无法获取SPWeb对象。
还有其他想法吗?
答案 0 :(得分:2)
您可以创建一个新的列表实例ListInstance构造。见:http://msdn.microsoft.com/en-us/library/ms476062.aspx 将在激活该特定功能时创建该列表。要自动激活功能,您可以使用功能装订。见http://msdn.microsoft.com/en-us/library/ff648422.aspx
答案 1 :(得分:1)
列表创建是一个非常常见的要求。通常最好在激活而不是安装时创建列表实例,如另一张海报所示。您可以访问所需的激活范围(激活该功能的SPWeb或SPSite),如下所示:
SPWeb web = (SPWeb)properties.Feature.Parent;
或
SPSite site = (SPSite)properties.Feature.Parent;
希望这有帮助。