0

我有一个包含设置列表模板的 Sharepoint 功能,其他功能可以读取该模板。列表必须有一个特定的名称才能使整个工作正常工作,所以理想情况下,我宁愿创建一个列表而不是列表模板。

我尝试通过覆盖方法来玩这个EventReceiver类。FeatureInstalled它接收一个SPFeatureReceiverProperties类型的参数。我查看了文档,发现一个属性 ,UserCodeSite指的SPSite是功能的安装位置,如果它是一个Site范围解决方案,在我的例子中就是这样。这样,我想编写一段代码,从功能中包含的列表模板创建一个特定的列表。

SPWeb_object.Lists.Add(listName, "", SPListTemplate_object)

但是该属性为空,该属性也是如此Feature。所以我无法获取 SPSite 对象,也无法获取 SPWeb 对象。

还有其他想法吗?

4

2 回答 2

2

您可以创建一个新的列表实例 ListInstance 构造。请参阅:http: //msdn.microsoft.com/en-us/library/ms476062.aspx 该列表将在激活该特定功能时创建。要自动激活功能,您可以使用功能装订。请参阅此http://msdn.microsoft.com/en-us/library/ff648422.aspx

于 2012-05-07T15:37:17.020 回答
1

创建列表是一个非常常见的需求。正如另一位海报所建议的那样,通常最好在激活而不是安装时创建一个列表实例。您可以访问所需的激活范围(激活该功能的 SPWeb 或 SPSite),如下所示:

SPWeb web = (SPWeb)properties.Feature.Parent;

或者

SPSite 站点 = (SPSite)properties.Feature.Parent;

希望这可以帮助。

于 2012-05-07T21:49:47.527 回答