1

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

我的代码甚至不会执行,因为它抱怨我的 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>";
4

2 回答 2

0

您在And元素中有多个条件。这些And元素仅支持此处记录的两个条件。And使用仅包含两个条件或其他元素的多个嵌套元素重写查询And

于 2013-09-06T09:49:09.310 回答
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>
于 2013-09-06T11:32:17.577 回答