2016-08-15 67 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')); 
} 

}

「零件名稱」是表中的現有字段上我運行查詢,它是一個文本字段,並且變量partName包含一個字符串,該字符串包含在此表中的此字段中。

但是,查詢返回表中的最後一個項目,而不是這個(最初的項目之一,不重要)。

我試過刪除最後一項,看看是否有關於那個的具體內容,但它又發生在新的最後一項。

我是新來的caml,所以我不知道這是怎麼回事。

任何幫助,將不勝感激。

更新:

我想我發現了這個問題。當我跑alert(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

當設置CAML查詢對象的視圖XML,你應該在你的XML外<View><Query>元素。

如果XML的格式不是由SharePoint識別的格式,它將執行一個默認查詢,該查詢將(通常)返回所有項目。這可能是你的情況發生了什麼,代碼列舉了結果中的所有項目。因此,只有最後一項的值存儲到您所期望的變量中。

+0

當我在它添加它返回一個空字符串。 – Ulthran

+0

你提供的代碼片段看起來並不像它返回任何東西......你能編輯你的問題來包含你的完整代碼嗎? – Thriggle

+0

這個想法是讓查詢返回具有與partName變量匹配的Part Name的記錄。這個查詢不會那麼做嗎? – Ulthran