我在这里遇到麻烦了!我有一个sharepoint网站,其中有一个照片库列表(PhotoGallery)。我需要查询此列表确实从指定的库(文件夹)中恢复图像。我开发了一个带有选择菜单的Web部件,该菜单可以加载此照片库中的所有画廊(文件夹)。然后,当我选择特定的图库(文件夹)时,模式会显示该图库(文件夹)中的图像。但我无法取回正确的结果。查询只返回列表中所有图库(文件夹)的列表。没有图像返回。但有趣的是,当我停止浏览器并使用文件夹值复制查询并将其粘贴到 Caml Query Helper 时,查询工作正常!我的疑问是:
var camlQ = new SP.CamlQuery();
camlQ.set_viewXml("<Where><And><Eq><FieldRef Name=\"ContentType\" /><Value Type=\"Text\">Image</Value></Eq><Contains><FieldRef Name=\"FileRef\" /><Value Type=\"Text\">" + VALUE_FROM_OPTION + "</Value></Contains></And></Where>");
var clientCtx = new SP.ClientContext.get_current();
this.results = clientCtx.get_web().get_lists().getByTitle("PHOTO_GALLERY_NAME").getItems(camlQ);
clientCtx.load(this.results);
clientCtx.executeQueryAsync(Function.createDelegate(this, function(sender, args){
// SOME CODE
}), Function.createDelegate(this, function(sender, args){
// SOME CODE
}));
答案 0 :(得分:1)
您的CAML查询似乎是正确的,但SP.CamlQuery.set_view
方法接受xml,其中根元素为View
(还需要Query
元素)。
因此,将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>');