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循环运行时,它会显示列表的所有内容,而不仅仅是与筛选器匹配的行。

我做错了什么?

这很可能与SP.CamlQuery.viewXml属性的值格式错误有关。由于此属性需要定义列表视图的XML模式,因此root元素必须是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>

相关内容

  • 没有找到相关文章

最新更新