SharePoint在项目添加到库时运行方法

时间:2009-11-30 13:22:49

标签: c# sharepoint sharepoint-2007

我有一个库,我想在添加项目时运行一些代码来填充一些额外的列。有没有什么办法可以让这个代码自动运行。我将在哪里添加它。还有可能有一个屏幕能够编辑代码的选项。只有一些指向正确的dirrection将是伟大的。

这是创建工作流程的情况吗?

4 个答案:

答案 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/