2015-03-03 54 views
0

我有了這個代碼,這需要標題的一部分來執行列表的內容的查詢和過濾器部分:CAML查詢包含不起作用

<script type="text/javascript"> 

var items_lista; 

    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', Initialize); 

    function Initialize() { 

     var PDP_Link_Filter = $("title").text().split("-")[1].split(".")[0]; 

     PDP_Link_Filter = "Link_" + PDP_Link_Filter + "_"; 

     var contexto = SP.ClientContext.get_current(); 
     var web = contexto.get_web(); 
     var listas = web.get_lists(); 
     var parametros = listas.getByTitle('Parametrizacion_WF'); 

     var query = new SP.CamlQuery(); 

     query.set_viewXml("<Query><Where><Contains><FieldRef Name='Title'/>" + 
          "<Value Type='Text'>" + PDP_Link_Filter + "</Value></Contains></Where></Query>"); 

     console.log(query); 

     items_lista = parametros.getItems(query); 
     contexto.load(items_lista); 
     contexto.executeQueryAsync(Function.createDelegate(this, this.onRequestSucceeded), Function.createDelegate(this, this.onRequestFailed)); 

    } //Initialize 

    function onRequestSucceeded() 
    { 
     console.log(items_lista); 
     for(i = 0; i < items_lista.get_count(); i++) 
     { 
      console.log(items_lista.get_item(i).get_item('Title')); 
     }  
    } 
    function onRequestFailed() { console.log('Error'); } 

</script> 

它生成的查詢過濾器(通過執行console.log()獲得):

<Query><Where><Contains><FieldRef Name='Title'/><Value Type='Text'>P000</Value></Contains></Where></Query> 

但for循環運行時,它顯示的列表不僅符合篩選條件的行的所有內容。

我在做什麼錯?

回答

0

這很可能與SP.CamlQuery.viewXml property的格式不正確的值有關。由於此屬性需要定義列表視圖XML架構,該元素必須是View元素,例如:

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var items = list.getItems('<View Scope="RecursiveAll"><Query></Query></View>'); 

在你的情況圍住查詢與View元素:

<View> 
    <Query>...</Query> 
</View> 
+0

我按照你的建議附上它,但現在查詢不返回任何數據。我正在做一個像查詢嗎?我想要選擇標題名稱如P000的所有項目。我甚至嘗試過使用'%P000%',但無法使用 – ADPX 2015-03-03 18:00:56

+1

抱歉,我的錯誤。查詢過濾器是錯誤的,我需要一個trim()。你的解決方案工作正常。謝謝! – ADPX 2015-03-03 18:12:15