我已经通过各种文章倾注了但是还没有找到我的确切方案的答案。我有一个带有一些查询参数的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。
答案 0 :(得分:1)
您可以使用此语法来确定字段是否为空:
<Where><IsNull><FieldRef Name='YourFieldName' /></IsNull></Where>
您应该删除Value
中的额外IsNull
元素。
答案 1 :(得分:0)
我决定使用HTML表单Web部件来实现我的目标(而不是内容编辑器)。 HTML表单Web部件将所有过滤器值保存到任何框中,并且可以连接到使用参数和自定义caml查询过滤我的列表。