我知道列表中的事件接收器已添加的项目等。但是,我没有找到在创建列表时触发代码的方法。
我要做的是在创建列表时(由用户通过UI)将工作流与列表相关联。
任何想法?
感谢。
答案 0 :(得分:6)
您可以选择几条路线......
您可以在已定义工作流关联的位置编写自己的列表定义 - 这样,基于列表定义创建的所有列表都将默认包含您的工作流。
或者......取决于您的工作流程...将EventReceiver写入您希望附加工作流程的所有类型的列表(可以很容易地实现功能)并让您的事件接收者关联工作流程第一项被添加。
或者您可以将工作流程与列表中使用的内容类型相关联(您自己的内容类型附加到您自己的列表定义或默认的SharePoint内容类型)
我不知道你的其他解决方案,所以对我来说建议最好的解决方案是不合适的。
我(几乎)总是这样做,就是编写我自己的列表定义 - 这样我现在或将来都可以避免这样的问题。
答案 1 :(得分:3)
使用SharePoint 2010,现在可以通过覆盖SPListEventReceiver类中的ListAdded事件来挂钩列表创建事件。
答案 2 :(得分:1)
我通常会部署一个额外的视图页面,该页面设置为默认视图。当用户创建列表时,他将被发送到包含后面代码中的设置的视图页面。视图页面然后调用已创建的方法,该方法更改默认视图,删除设置视图并更改指向设置视图的任何导航节点。
答案 3 :(得分:1)
这个问题可能没有完美的答案,因为没有列表添加事件接收器(如果内存让我正确)。
我不知道是否是这种情况,但是如果你真的需要将一个itemadded(或更新,删除等)事件注册到任何新列表,我相信你可以在网站上注册这些事件(SPWeb)级别,它们将触发创建的任何新列表。