CAML查询检查NULL参数

时间:2016-05-31 17:39:27

标签: sharepoint-2010 caml

我已经通过各种文章倾注了但是还没有找到我的确切方案的答案。我有一个带有一些查询参数的SharePoint 2010列表,用于过滤目的。我的CAML查询适用于过滤,除非在一种情况下,我在查询中首次点击列表视图时,我喜欢通用显示所有标准(即我的客户端将主动能够查看/分页/排序数据首先要搜索列表)。 如果我只是过滤列表字段我会被设置,但由于我在CAML中引用了查询参数,我在SharePoint Designer中接收SOAP错误。 SQL等价物是:Where(@ Parameter1为null,@ Parameter2为null,@ Parameter3为null ...)

我试过这个结构:

    <Or Group="true">
       <And>
         <And>
           <IsNull>
           <FieldRef Name ="Title"/>
           <Value Type="Text">{RollNum}</Value>
           </IsNull>
        <Gt>
          <FieldRef Name="ID"/>                     
          <Value Type="Counter">
         <IfEqual>
          <Expr1><![CDATA[{Param1}]]></Expr1>   
          <Expr2/>
          <Then>0</Then>                    
          <Else>2147483647</Else>
        </IfEqual>
        </Value>
      </Gt>
    </And>
   <IsNull>
      <FieldRef Name ="RefNumber"/>
      <Value Type="Text">{RefNum}</Value>
      </IsNull>
    </And>
</Or>...the rest of the query, which works fine.

我感觉我的结构不正确。

提前致谢, Brian H。

2 个答案:

答案 0 :(得分:1)

您可以使用此语法来确定字段是否为空:

<Where><IsNull><FieldRef Name='YourFieldName' /></IsNull></Where>

您应该删除Value中的额外IsNull元素。

答案 1 :(得分:0)

我决定使用HTML表单Web部件来实现我的目标(而不是内容编辑器)。 HTML表单Web部件将所有过滤器值保存到任何框中,并且可以连接到使用参数和自定义caml查询过滤我的列表。