我已经搜索了 jQuery spservices 代码示例和 MSDN参考 对于一个简单的示例,如何使用were子来更新几个listItems。

用于更新具有ID = 500的单个ListItem的代码,看起来像这样:

$(divId).html(waitMessage).SPServices({
    operation: "UpdateListItems",
    listName: "MyList",
    ID: 500,
    valuepairs: [["MyField", 1]],
    completefunc: function (xData, Status) {
    	$(divId).html("");
    }
});

但是,是否也可以添加一个类似的地方:

<Where><Eq><FieldRef Name="Status"/><Value Type="Text">Ready</Value></Eq></Where>

还是我应该这样做 这个帖子 ? (首先检索列表,然后为每个项目进行循环吗?)

有帮助吗?

解决方案

那里。如果您正在使用jQuery和Web服务(希望与我的 SPServices 库!),您必须执行两个步骤。首先与您的camlquery致电getListItems,以获取您需要使用的项目,然后致电UpdatElistItems进行更改。

顺便说一句,这不是我的设计,而是SharePoint列表Web服务的工作方式。如有疑问,请始终转到MSDN上的源文档,以查看每个操作对参数的要求。我在SPServices中的所有操作上都有链接,这些链接将您直接带到MSDN上的适当页面。

最后,在UpdateListItems中的批次想法在其术语中有些误导。实际上,您可以将“批处理”请求到一个updateListItems调用中,但是您可能想或可能不想根据错误处理要求来执行此操作。同样,最好检查MSDN上的SDK。

编辑:我在v0.5.8中的spservices添加了一个新功能,称为spupdatemultiplipliplistitems做到这一点: http://spservices.codeplex.com/wikipage?title=%24%28%299.SPSERVICES.SPUPDATEMULTIPLIPLISTITEMS

其他提示

我还没有在jQuery上专门执行此操作,但是您可以使用批处理更新来更新多个列表项目。

您使用CAML创建批处理命令并使用SPWEB对象上的ProcessBatchData方法执行命令。

在MSDN上执行此操作有一个好的代码示例http://msdn.microsoft.com/en-us/library/cc404818.aspx

他的库确实支持批处理更新,但我还不确定批处理更新是否支持CAML查询。如果要更新多个项目,则可以使用CAML查询的GetItems服务来检索要更新的项目。然后,您可以在返回时使用每个jQuery,然后为要更新的每个项目创建一个updateItems函数。同样,只有在批处理更新中无法使用CAML查询时,这是可行的。

我认为它没有批处理更新。

我相信您必须使用CAML查询查询列表,然后在结果中迭代结果。也就是说,我确实与Marc互动,看看他是否可以为您提供正式答案。

SharePoint也根本无法基于查询来本地支持更新项目,即使是使用spweb.processbatchdata()。鉴于尝试通过ID更新每个项目的性能(即使是一个大批次语句,也是如此)。

许可以下: CC-BY-SA归因
scroll top