读取列表项Sharepoint 2010客户端对象模型

时间:2012-10-02 18:27:29

标签: javascript sharepoint sharepoint-2010 sharepoint-api

我有一个列表,我存储图像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查询中,我试图过滤标记为“Anchor?”的项目(是/否列)。

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

3 个答案:

答案 0 :(得分:3)

试试这个:

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

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

  1. 使用标准功能创建列表视图。
  2. 在SharePoint Designier中打开它,只需从代码中复制CAML查询。
  3. 希望这会有所帮助。

答案 1 :(得分:1)

Query中存储的CAML查询中删除myQueryString标记。运行查询时会隐式添加标记。

之前它也让我绊倒了。关于它的阴险的是,查询不会彻底失败;有时候它会起作用,有时却不起作用,这使得调试变得很麻烦。

答案 2 :(得分:0)

我发现如果你在CAML查询中只使用单引号就行了。由于某种原因,混合双引号和单引号会查询查询。希望有所帮助。