1

我希望创建一个事件接收器,当通过 InfoPath 表单将项目从一个列表添加到另一个列表时,如果该项目已经存在,它将不会创建新项目,它只会更新该项目的“数量”。

例如。

库存物品列表 > 将 2 个牛奶添加到购物车 > 牛奶已在购物车中 > 将牛奶更新为 3 个。

4

1 回答 1

0

您应该有一个唯一的密钥来识别您的项目。理想情况下,这将是一个数字或类似的东西,因此您可以识别第二个列表中的项目。在您的牛奶示例中,您没有 ID。所以你可以添加一个或者你可以将项目与文本进行比较(我想“牛奶”将在标题字段中)

当项目被添加到列表中时,您可以在“ItemAdding”中使用 SPQuery 检查该项目是否已存在于列表中(有足够的示例在线查找)。如果查询返回 0 个项目,您可以让 SharePoint 正常工作。如果找到一个项目,您应该更新找到的项目的数量。

2个注意事项你应该考虑:

为避免该项目已经在列表中时被添加,您可以使用以下代码。

properties.Cancel = true;
properties.Status = SPEventReceiverStatus.CancelNoError

取消确保项目没有被添加。通常这会引发错误,但通过设置状态不会引发错误。

您应该考虑的第二件事是,如果您想让 item update 在更新数量时触发。因为这会导致奇怪的行为。我建议在更新数量之前禁用事件触发,然后再次启用它。

于 2012-12-05T23:22:44.403 回答