我有一个库,我想在添加项目时运行一些代码来填充一些额外的列。有没有什么办法可以让这个代码自动运行。我将在哪里添加它。还有可能有一个屏幕能够编辑代码的选项。只有一些指向正确的dirrection将是伟大的。
这是创建工作流程的情况吗?
答案 0 :(得分:3)
工作流程不是解决问题的方法。您应该创建一个项目事件接收器。我说这个的原因是因为听起来你需要在添加项目后运行一些代码。由于您不需要维护状态,因此工作流不是解决此问题的正确方法。以下是您的操作:在Visual Studio中创建一个新类,并使其继承自SPItemEventReceiver
。覆盖ItemAdded()
方法并将逻辑放在那里。例如:
public class MyItemEventReceiver : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
// do your stuff
}
}
添加项目后将调用此代码。如果您需要在添加项目之前运行代码,那么您将覆盖ItemAdding()
方法。我的公司部署事件接收器的方式有点不同,但这是使用Elements.xml的“书本”方法:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="101">
<Receiver>
<Name>My Event Receiver</Name>
<Type>ItemAdding</Type>
<SequenceNumber>1000</SequenceNumber>
<Assembly>AssemblyName, Version=1.0.0.0, culture=neutral, PublicKeyToken=[token]</Assembly>
<Class>Namespace.Class</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements>
您提到了一个用于编辑代码选项的屏幕。听起来你正在接近另一种蠕虫,所以我不能直接说出来。但是,如果要传递不同于部署到部署的各种选项,请将它们放入上面的<Data>
标记中。然后,您可以从代码中的properties.ReceiverData
属性访问您的选项。此外,请注意<Filter>
标记不执行任何操作 - WSS 3团队未实现这些标记。希望这会有所帮助。
答案 1 :(得分:0)
您可以做的是创建一个事件处理程序并将代码放在那里。您可以在This视频列表中找到示例。
EventHandler为您提供了一个连接代码并完成您的工作的地方。您还可以决定代码何时运行(同步或异步),即添加项目之前或之后。 This是了解EventHandlers的绝佳文章。
答案 2 :(得分:0)
Workflows或EventReceivers(事件处理程序)都可以附加到列表或库中,并且可以完成工作。您应该使用哪一个取决于您要归档的内容。
工作流程稍微复杂但功能更强大,主要用于处理涉及用户交互的一些长时间运行的流程。 SharePoint控制并存储工作流的状态。因此,工作流可以在某个状态内停止,等待用户操作。当用户完成他的工作后,工作台将继续。
与之相反,EventReceivers只是一段代码,它将在它附加到的列表或库上发生/发生某个事件之前或之后运行。如果触发了EventReceiver,则用户无法与其进行交互。 EventReceiver必须依赖于触发事件时可用的数据。
答案 3 :(得分:0)
关于工作流的好处是用户可以看到工作流历史记录中的内容。
我从头到尾写了一篇关于事件接收者的博客: http://koenvosters.wordpress.com/2009/07/31/howto-create-an-event-handler-for-sharepointmoss-2007/