2010-03-31 43 views
1

我有一个名为project的共享点列表。这个名单有专栏称为工作小时。 然后我也有一个名为任务的列表。这份名单还有一个名为小时工作的专栏。任务列表还有一个查找字段,我们从项目列表中选择项目ID。项目工作时间是任务工作时间的总和

因此对于每个项目我们可以有很多任务。

现在任务列表项是由个人用户创建的,我必须创建这样一种机制,即在项目列表中工作的小时数必须始终是该项目任务中工作小时数的总和。

我怎样才能做到这一点。

回答

5

您需要在任务上放置ItemAdded,ItemUpdated和ItemDeleting(其中ItemDeleted您无法知道该任务属于哪个项目)事件接收器,并且它们都将调用相同的函数。

该功能将从任务中查找项目列表项。然后,您对任务执行CAML查询,以使用项目ID和LookupId属性获取该项目的所有任务,如下所示: < FieldRef Name ='int_field_name'LookupId ='TRUE'/ > < Value Type = '查找'>值< /值>

对它们进行计算,并使用SystemUpdate(false)将结果写入项目列表项。巴姆!

+0

但是您可能还需要项目上的Closed标志,并在接收方中检查此标志,因为您不希望项目小时数无限期地变化 – kerray 2010-04-03 12:11:51

2

您需要SLAM的列表。

或查询引用项目的所有任务与这样的ID,然后循环这些任务,总结小时。