0

我在这里遇到了麻烦!我有一个共享点站点,其中有一个照片库列表 (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

}));
4

1 回答 1

1

您的 CAML 查询似乎是正确的,但SP.CamlQuery.set_view方法接受根元素所在的 xml ViewQuery还需要元素)。

因此,将您的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>');
于 2014-05-31T12:17:54.380 回答