Sharepoint Caml过滤列表

时间:2013-11-29 09:44:03

标签: sharepoint sharepoint-2013 caml

我想将过滤器应用于Sharepoint列表:

(((user == currentuser)&&(dept ==“editor”))&&((status == published)||(status == edited)||(status == printed )))

这是我的代码

     <Where>
  <And>
     <And>
        <And>
           <And>
              <And>
                 <Eq>
                    <FieldRef Name='Author' />
                    <Value Type='Integer'>
                       <UserID Type='Integer' />
                    </Value>
                 </Eq>
                 <Eq>
                    <FieldRef Name='Dept' />
                    <Value Type='Text'>Editor</Value>
                 </Eq>
              </And>
              <Eq>
                 <FieldRef Name='Status' />
                 <Value Type='Text'>Published</Value>
              </Eq>
           </And>
           <Eq>
              <FieldRef Name='Status' />
              <Value Type='Text'>Draft</Value>
           </Eq>
        </And>
        <Eq>
           <FieldRef Name='Status' />
           <Value Type='Text'>Approved</Value>
        </Eq>
     </And>
     <Eq>
        <FieldRef Name='Status' />
        <Value Type='Text'>Printed</Value>
     </Eq>
  </And>

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

有助于在CAML中使用Or运算符以及与您查询对应的过滤器值。查看您所拥有的查询,当编辑部门中的文档被发布,编辑或打印时,您看起来想要当前用户的所有内容。

所以基本上你有一套条件或者然后在它们之上应用AND术语。现在可能有一种更有效的方式来表达这一点,但下面的内容符合您的逻辑条件。

<Where>
  <And>
    <And>
      <Or>
        <Or>
          <Or>
            <Eq>
              <FieldRef Name='Status' />
              <Value Type='Text'>Published</Value>
            </Eq>
          </Or>
          <Eq>
            <FieldRef Name='Status' />
            <Value Type='Text'>Edited</Value>
          </Eq>
        </Or>
        <Eq>
          <FieldRef Name='Status' />
          <Value Type='Text'>Printed</Value>
        </Eq>
      </Or>
      <Eq>
        <FieldRef Name='Dept' />
        <Value Type='Text'>Editor</Value>
      </Eq>
    </And>
    <Eq>
      <FieldRef Name='Author' />
      <Value Type='Integer'>
        <UserID Type='Integer' />
      </Value>
    </Eq>
  </And>
</Where>