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

List 如何检查SharePoint列表中是否已存在项目?,list,events,sharepoint,infopath,receiver,List,Events,Sharepoint,Infopath,Receiver,我希望创建一个事件接收器,当通过InfoPath表单将项目从一个列表添加到另一个列表时,它不会创建新项目(如果该项目已存在),它只会更新该项目的“数量” 例如 库存物品列表>向购物车添加2份牛奶>牛奶已在购物车中>将牛奶数量更新为3份。您应该有一个唯一的键来标识您的物品。理想情况下,这应该是一个数字或类似的数字,这样您就可以在第二个列表中识别该项。在你的milk示例中,你没有ID。因此你可以添加一个ID,或者你可以将项目与文本进行比较,我想milk将位于标题字段中 将项目添加到列表中时,您可以在

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

例如


库存物品列表>向购物车添加2份牛奶>牛奶已在购物车中>将牛奶数量更新为3份。

您应该有一个唯一的键来标识您的物品。理想情况下,这应该是一个数字或类似的数字,这样您就可以在第二个列表中识别该项。在你的milk示例中,你没有ID。因此你可以添加一个ID,或者你可以将项目与文本进行比较,我想milk将位于标题字段中

将项目添加到列表中时,您可以在项目添加中使用SPQuery检查项目是否已存在于列表中,以联机查找足够的示例。若查询返回0项,您可以让SharePoint按正常方式执行其工作。如果找到某个项目,则应更新找到的项目的数量

2您应考虑的备注:

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

properties.Cancel = true;
properties.Status = SPEventReceiverStatus.CancelNoError
“取消”按钮确保未添加项目。通常情况下,这会引发错误,但通过设置状态,不会出现错误

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