CAML查询按当前用户返回所有任务

时间:2013-09-06 01:21:45

标签: sharepoint caml

我正在尝试使用CAML查询中的以下where子句查询整个网站集中的所有任务。据我所知,这段代码完全符合这个可能可靠的blog entry。任何人都知道它为什么不起作用? 感谢您的阅读

我的代码甚至不会执行,因为它抱怨我的CAML查询

"<Where>" +

     "<And>" +
         "<BeginsWith>" +
              "<FieldRef Name=\"ContentTypeId\" />" +
              "<Value Type=\"ContentTypeId\">0x0108009D937E40833C472CBC11D246C635B662</Value>" +
         "</BeginsWith>" +

          "<Eq>" +
               "<FieldRef Name=\"TaskStatus\" />" +
               "<Value Type=\"Text\">Completed</Value>" +
          "</Eq>" +


          "<Eq>" +
                "<FieldRef Name=\"AssignedTo\" />" +
                 "<Value Type=\"Lookup\">" + id + "</Value>" +
          "</Eq>" +

          "</And>" +

          "</Where>" +

            "<OrderBy>" +
                 "<FieldRef Name=\"Title\"/>" +
            "</OrderBy>";

2 个答案:

答案 0 :(得分:0)

And元素中有多个条件。 And元素仅支持记录为here的两个条件。使用仅包含两个条件或其他And元素的多个嵌套And元素重写查询。

答案 1 :(得分:0)

我同意上述答案。由于此处有多个And元素,并且任何And元素仅支持2个合取,因此必须使用嵌套的And元素来结合多个条件。如果您在SharePoint中使用默认任务列表,请尝试以下CAML查询 -

<Query>
    <Where>
        <And>
            <BeginsWith>
                <FieldRef Name="ContentTypeId" />
                <Value Type="Counter">0x0108009D937E40833C472CBC11D246C635B662</Value>
            </BeginsWith>
            <And>
                <Eq>
                    <FieldRef Name="TaskStatus" />
                    <Value Type="Choice">Completed</Value>
                </Eq>
                <Eq>
                    <FieldRef Name="AssignedTo" />
                    <Value Type="UserMulti">id</Value>
                </Eq>
            </And>
        </And>
    </Where>
    <OrderBy>
        <FieldRef Name="Title" Ascending="False" />
    </OrderBy>
</Query>