2

想不出一个好的方法来做到这一点。我在 SharePoint 中有一个视图,我想使用(A 和 B)或(A 和 C)之类的查询进行过滤。我正在尝试在 Sharepoint Designer 中用 CAML 编写此代码,但无处可去。这是我第一次使用 CAML,所以没有帮助。到目前为止,这是我想出的:

<Where>
           <And>
                <Or>
                     <And>
                          <Eq>
                               <FieldRef Name="Component" />
                               <Value Type="Text">ComponentX</Value>
                          </Eq>
                          <Eq>
                               <FieldRef Name="Review_x0020_Canceled" />
                               <Value Type="Boolean">0</Value>
                          </Eq>
                     </And>
                </Or>
                <Eq>
                     <FieldRef Name="Component" />
                     <Value Type="Text">ComponentX</Value>
                </Eq>
                <IsNull>
                     <FieldRef Name="Actual_x0020_Finish_x0020_Date" />
                </IsNull>
           </And>
      </Where>

我希望显示所有记录,其中 (Component=ComponentX AND Review Canceled=No) 或 (Component=ComponentX AND Actual Finish Date=Null)

有任何想法吗?

4

2 回答 2

1

尝试这个:

<Where>
  <Or>
    <And>
      <Eq>
        <FieldRef Name='Component' />
        <Value Type='Text'>ComponentX</Value>
      </Eq>
      <Eq>
        <FieldRef Name='Review_x0020_Canceled' />
        <Value Type='Boolean'>0</Value>
      </Eq>
    </And>
    <And>
      <Eq>
        <FieldRef Name='Component' />
        <Value Type='Text'>ComponentX</Value>
      </Eq>
      <IsNull>
        <FieldRef Name="Actual_x0020_Finish_x0020_Date" />
      </IsNull>
    </And>
  </Or>
</Where>

将返回具有蓝色背景颜色的记录

新代码caml:

<Where>
  <And>
    <And>
      <Eq>
        <FieldRef Name='Review_x0020_Canceled' />
        <Value Type='Boolean'>0</Value>
      </Eq>
      <Eq>
        <FieldRef Name='Component' />
        <Value Type='Text'>ComponentX</Value>
      </Eq>
    </And>
    <IsNull>
      <FieldRef Name='Actual_x0020_Finish_x0020_Date' />
    </IsNull>
  </And>
</Where>
于 2013-06-07T19:55:05.510 回答
0

你的逻辑

(Component = ComponentX AND Review Canceled = NO) OR 
    (Component = ComponentX AND Actual Finish Date = NULL)

相当于

Component = ComponentX And (Review Canceled = NO OR Actual Finish Date = NULL)

这将是这个 CAML 查询:

<Where>
  <And>
    <Eq>
      <FieldRef Name="Component" />
      <Value Type="Text">ComponentX</Value>
    </Eq>
    <Or>
      <Eq>
        <FieldRef Name="Review_x0020_Canceled" />
        <Value Type="Boolean">0</Value>
      </Eq>
      <IsNull>
        <FieldRef Name="Actual_x0020_Finish_x0020_Date" />
      </IsNull>
    </Or>
  </And>  
</Where>
于 2013-06-07T20:06:32.907 回答