2016-05-31 61 views
1

我倒过各种文章,但没有找到我的确切场景的答案。我有一个包含一些查询参数的SharePoint 2010列表用于过滤目的。我的CAML查询适用于过滤,除了在一种情况下,我希望在我的查询中有一个通用显示全部条件,以便在第一次打开列表视图时(也就是说,我的客户端能够主动查看/分页/搜索列表)。 如果我只是过滤将设置的列表字段,但由于我在CAML中引用查询参数,因此我在SharePoint Designer中收到SOAP错误。 的SQL相当于将是:如果(@参数1是空,@参数2为空,并@参数3为空...)CAML查询检查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. 

我有一种感觉我结构不正确。

由于提前, 布莱恩H.

回答

0

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

1

你可以使用这个语法来确定是否一个字段为空:

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

你有内IsNull额外Value元素,你应该删除。

+0

嗨Glenn, 唯一的问题是我没有检查如果列表字段为空,我试图检查是否输入查询参数的文本框为空。 基本上,如果我提供的搜索查询中的所有框都为空,我希望列表显示全部,否则用户可以在我的任何参数框中输入一个值来过滤列表ad-hoc – Brian