caml 查询返回列表中的最后一项

caml Query Returning Last Item in List

我有一个 CamlQuery,我设置如下:

function getPartID(partName) {
var clientContext = new SP.ClientContext('/sites/HepatoChemKitCustomizationForms/');
var oList = clientContext.get_web().get_lists().getByTitle('PartsTable');

var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name="Part_x0020_Name" /><Value Type="Text">' + partName + '</Value></Eq></Where></Query></View>');
this.collListItem = oList.getItems(camlQuery);

clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onPartQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onPartQuerySucceeded(sender, args) {
var listItemEnumerator = collListItem.getEnumerator();

while (listItemEnumerator.moveNext()) {
    var oListItem = listItemEnumerator.get_current();
    partID = (oListItem.get_item('Part_x0020_ID'));
}

}

'Part Name' 是 table 中的现有字段,我在其中 运行 进行查询,它是一个文本字段,并且变量 partName 包含一个包含在内的字符串在 table.

的这个字段中

但是,查询 return 是 table 中的最后一项而不是这一项(第一项,无关紧要)。

我尝试删除最后一项以查看是否有关于该项的特定内容,但新的最后一项又发生了这种情况。

我是 caml 的新手,所以我不知道它出了什么问题。

如有任何帮助,我们将不胜感激。

更新:

我想我找到了问题所在。当我 运行 alert (partName + " " + oListItem.get_item('Part_x0020_Name'));它显示了这个:

虽然我不知道为什么要用回车构建字符串 return。我使用以下代码构建字符串:

(catalystArray[i] + "/" + baseArray[j]);

如果来自 catalystArray 的对象确实有一个马车 return 钉在上面,我该如何删除它?

更新:

解决了。愚蠢的错误,但我花了一整天才找到。

catalystArray[i].replace(/[\n\r]+/g, '');
baseArray[i].replace(/[\n\r]+/g, '');
(catalystArray[i] + "/" + baseArray[j]);

设置 CAML 查询对象的视图 XML 时,您应该在 XML.

中包含外部 <View><Query> 元素

如果 XML 不是 SharePoint 可识别的格式,它将执行一个默认查询,该查询将(通常)return 所有项目。这很可能是您的情况,代码会枚举结果中的所有项目。因此,只有最后一项的值会存储到您期望的变量中。