【问题标题】:Create list upon feature installation in Sharepoint Server 2010在 Sharepoint Server 2010 中安装功能时创建列表
【发布时间】:2012-05-08 05:49:47
【问题描述】:

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

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

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

但是该属性为空,Feature 属性也是如此。所以拿不到SPSite对象,也拿不到SPWeb对象。

还有其他想法吗?

【问题讨论】:

  • 那么,在您的 Sharepoint 项目中,您是否在实施时创建了列表?
  • 我想要那个。最好从模板创建该列表。到目前为止,我只有模板。

标签: sharepoint sharepoint-2010


【解决方案1】:

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

【讨论】:

  • 我创建了<Field>s,然后是内容类型,然后是列表定义,然后我用数据填充了它。成功了,谢谢。
【解决方案2】:

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

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

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

希望这会有所帮助。

【讨论】:

  • 正如我在问题中提到的,properties.Feature 在我的情况下为空。我目前正在尝试类似于 Vojtech Nadvornik 提出的解决方案。
  • 对于范围为 SPWeb、SPSite 或 SPWebApplication 的功能,properties.Feature 成员不应为空。如果是,则自定义解决方案和/或场配置可能有问题。无论您选择如何进行,最好还是解决根本原因。
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 2012-07-14
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多