如何在创建SharePoint列表时触发代码?

4

我知道在列表上可以创建项目的事件接收器等。然而,我还没有找到一种方法来在创建列表时触发代码。

我的目标是在用户通过UI创建列表时将工作流与该列表相关联。

有任何想法吗?

谢谢。

4个回答

6
有几种方法可以采取...
您可以编写自己的列表定义,在其中定义工作流关联 - 这样基于您的列表定义创建的所有列表都将默认包含您的工作流程。
或者...根据您的工作流程...编写一个事件接收器,将其附加到您希望将工作流程附加到的所有类型的列表上(可以通过功能轻松实现),并在添加第一项时使您的事件接收器关联工作流程。
或者,您可以将工作流程关联到列表中使用的内容类型(您自己的内容类型,附加到自己的列表定义或默认的SharePoint内容类型)。
我不知道您解决方案的其余部分,因此很难为您建议最佳解决方案。
我(几乎)总是编写自己的列表定义 - 这样我就可以避免像这样的问题,现在或将来。

谢谢Brian。我可能会将工作流程与列表模板关联起来。虽然我认为最好将工作流程附加到任何库上,并在初始化时创建所需的元素(列、视图等)。 - Donaldinio

3

使用 SharePoint 2010,现在可以通过覆盖 SPListEventReceiver 类中的 ListAdded 事件来挂钩列表创建事件。


1
通常我会部署一个额外的视图页面,将其设置为默认视图。当用户创建列表时,他将被发送到包含代码后台设置的视图页面。然后,视图页面调用我创建的方法,该方法更改默认视图,删除设置视图并更改指向设置视图的任何导航节点。

这是一个非常有趣的方法!谢谢! - Donaldinio

1

这个问题可能没有完美的答案,因为如果我没记错的话,没有添加事件接收器的列表。

我不知道是否是这种情况,但如果您只需要注册一个itemadded(或updated、deleted等)事件到任何新列表中,我相信您可以在网站(SPWeb)级别注册这些事件,并且它们将在创建任何新列表时触发。


1
有一个 ListAdded 事件接收器:public override void ListAdded(SPListEventProperties properties) - Imir Hoxha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接