使用Javascript和<contains>进行CAML查询

时间:2016-10-26 12:56:40

标签: javascript sharepoint caml

我们必须在SharePoint的客户端工作,所以我使用Javascript,而不是C#。 我想用“包含”这样查询

function onRequestSucceeded() {
    myList = website.get_lists().getByTitle("Prüfberichte");
    var query = '<Where><Contains><FieldRef Name="Name_x0020_Lieferant_x0020__x0028_Supplier_x0020_name_x0029_"/><Value Type="Text">Hans</Value></Contains></Where>';
    camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml(query);
    items = myList.getItems(camlQuery);
    clientContext.load(items, 'Include(Id, DisplayName, HasUniqueRoleAssignments)');
    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);
}

不幸的是,这会返回整个列表,而不是包含“Hans”的单个项目。

这是一个“包含”特定的问题,“Eq”工作正常。

欢迎所有帮助!

1 个答案:

答案 0 :(得分:0)

SharePoint JSOM API SP.CamlQuery.viewXml property接受具有以下结构的 XML架构

<View>
    <Query>
          <Where>
               ...
          <Where> 
   </Query>
</View> 

例如:

var query=new SP.CamlQuery();
query.set_viewXml('<View Scope="RecursiveAll"><Query><Where><Eq><FieldRef Name="FSObjType" /><Value Type="Integer">1</Value></Eq></Where></Query></View>');

当提供无效的 XML模式时(就像你的情况一样),查询被忽略并返回所有项目(标准行为),很可能是它出现在你的情况下的原因。