caml Query Возвращает последний элемент в списке
У меня есть 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" - это существующее поле в таблице, по которой я выполняю запрос, это текстовое поле, а переменная partName содержит строку, которая включена в это поле в таблице.
Тем не менее, запрос возвращает последний элемент в таблице вместо этого (один из первых элементов, не то, что это имеет значение).
Я попытался удалить последний элемент, чтобы увидеть, было ли что-то конкретное в этом, но это случилось снова с новым последним элементом.
Я новичок в Caml, поэтому я не знаю, что происходит с этим.
Любая помощь будет оценена.
ОБНОВИТЬ:
Я думаю, что нашел проблему. Когда я запустил оповещение (partName + " " + oListItem.get_item('Part_x0020_Name')); это показывает это:
Я не знаю, почему строка строится с возвратом каретки. Я использую следующий код для построения строки:
(catalystArray[i] + "/" + baseArray[j]);
Если на объект из CatalyArray действительно прикреплен возврат каретки, как бы я его удалил?
ОБНОВИТЬ:
Решил это. Тупая ошибка, но мне потребовался целый день, чтобы найти.
catalystArray[i].replace(/[\n\r]+/g, '');
baseArray[i].replace(/[\n\r]+/g, '');
(catalystArray[i] + "/" + baseArray[j]);
1 ответ
При установке View XML для объекта CAML Query вы должны включить внешний <View>
а также <Query>
элементы в вашем XML.
Если XML не в формате, распознаваемом SharePoint, он выполнит запрос по умолчанию, который (обычно) вернет все элементы. Это, вероятно, то, что происходит в вашем случае с кодом, перечисляющим все элементы в результатах. Как следствие, только значения последнего элемента сохраняются в переменных, которые вы ожидали.