5

我有一个存储图像 URL 的列表,我正在尝试读取项目列表并在页面上显示图像。为此,我编写了如下脚本......

<script type="text/javascript">
    function ViewItem()
    {
        var myQueryString = '<Query><Where><Eq><FieldRef Name="Anchor" /><Value 

Type="Boolean">1</Value></Eq></Where></Query>'; 

        var context = new SP.ClientContext.get_current();
        var web = context.get_web();
        var list = web.get_lists().getByTitle('AnchorImageList');
        var myquery = new SP.CamlQuery();

        myquery.set_viewXml(myQueryString); 

        myItems = list.getItems(myquery);


        context.load(myItems, 'Include(Title,ImageURL)');
        context.executeQueryAsync(Function.createDelegate(this, this.success), 

Function.createDelegate(this, this.failed));
    }
    function success() 
    {

        var LinkURL= "";
        var ImageURL="";
        var ListEnumerator = this.myItems.getEnumerator();
        while(ListEnumerator.moveNext())
        {
            var currentItem = ListEnumerator.get_current();
            LinkURL = currentItem.get_item('Title') ;
            ImageURL= currentItem.get_item('ImageURL');
            document.write('<img src="' + ImageURL+ '"+>');
            alert(LinkURL);

        }

    }
    function failed(sender, args) 
    {
        alert("failed. Message:" + args.get_message());
    }
</script>
<a href="#" onclick="Javascript:ViewItem();">View Items</a>

在我的 CAML 查询中,我试图过滤标记为“锚点?”(是/否列)的项目。

但即使我标记了一些不显示的项目,我也看到了所有结果。我在这里做错了什么。请有人帮助我。此外,在页面上加载图像后,页面仍然显示轮子,就好像它正在处理某些东西一样。我需要为此做些什么吗?

4

3 回答 3

3

试试这个:

<View>
  <Query>
    <Where>
      <Eq>
        <FieldRef Name="Anchor" />
        <Value Type="Boolean">1</Value>
      </Eq>
    </Where>
  </Query>
</View>

如果它不适合您,请按照以下步骤操作:

  1. 使用标准功能创建列表视图。
  2. 在 SharePoint Designer 中打开它,然后从代码中复制 CAML 查询。

希望这会有所帮助。

于 2012-10-18T13:17:33.063 回答
1

Query存储在myQueryString. 运行查询时会隐式添加标签。

以前也被我绊倒过。它的阴险之处在于查询永远不会彻底失败。有时有效,有时无效,调试起来很痛苦。

于 2012-10-05T16:23:40.843 回答
0

我发现如果你在 CAML 查询中只使用单引号,它会起作用。出于某种原因,混合双引号和单引号会增加查询。希望有帮助。

于 2012-12-19T15:31:57.077 回答