如何检查SharePoint列表中是否已存在某个项目?

时间:2012-12-05 15:49:15

标签: list events sharepoint infopath receiver

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

例如

股票项目清单>将2牛奶加入购物车>牛奶已经在购物车>将牛奶更新为3。

1 个答案:

答案 0 :(得分:0)

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

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

你应该考虑2个评论:

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

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

取消确保未添加该项目。通常这会引发错误但通过设置状态不会出现错误。

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