2016-08-15 6 views
0

У меня есть CamlQuery, который я поставил следующим образом:Запрос CAML Возвратившись Последний элемент в списке

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')); 
} 

}

«Наименование» является существующее поле в таблице, на которой я бегу query, это текстовое поле, а переменная partName содержит строку, которая включена в это поле в таблицу.

Однако запрос возвращает последний элемент в таблице вместо этого (один из первых элементов, а не тот, который имеет значение).

Я пробовал удалить последний элемент, чтобы узнать, есть ли что-то конкретное в этом, но это произошло снова с новым последним элементом.

Я новичок в caml, поэтому не знаю, с чем это происходит.

Любая помощь будет оценена по достоинству.

UPDATE:

Я думаю, что я нашел эту проблему. Когда я запускал предупреждение (partName + "" + oListItem.get_item ('Part_x0020_Name')); он показывает это:

enter image description here

Я не знаю, почему эта строка строится с возвратом каретки, хотя. Я использую следующий код для создания строки:

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

Если объект из catalystArray имеет возврат каретки прикрепил на него, как бы я его удалить?

ОБНОВЛЕНИЕ:

Решено. Тупая ошибка, но мне понадобился целый день, чтобы найти.

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

ответ

1

При установке View XML объекта CAML запросов, вы должны включать в себя внешние <View> и <Query> элементы в XML.

Если XML не в формате, распознаваемом SharePoint, он выполнит запрос по умолчанию, который будет (обычно) возвращать все элементы. Вероятно, это происходит в вашем случае с кодом, перечисляющим все элементы в результатах. Как следствие, только значения последнего элемента хранятся в переменных, которые вы ожидали.

+0

Когда я добавляю, что в нем возвращается пустая строка. – Ulthran

+0

Фрагмент кода, который вы предоставили, не похож на то, что он возвращает что-либо ... Не могли бы вы изменить свой вопрос, включив в него полный код? – Thriggle

+0

Идея состоит в том, чтобы запрос возвращал запись с названием детали, которая соответствует переменной partName. Будет ли этот запрос не делать этого? – Ulthran