这就是我正在做的事情(这是对谷歌的快速搜索,只是最初的结果之一):
http://msdn.microsoft.com/en-us/library/cc300163(v=office.12).aspx
我的数据绑定DropDownList项看起来像这样:
<listitem>All Providers</listitem>
<listitem>Provider 1</listitem>
<listitem>Provider 2</listitem>
我在视图中的当前CAML查询如下所示:
<Query>
<Where>
<And>
<Or>
<Eq>
<FieldRef Name="Status" />
<Value Type="Lookup">Submitted</Value>
</Eq>
<Eq>
<FieldRef Name="Status" />
<Value Type="Lookup">In Progress</Value>
</Eq>
</Or>
<Eq>
<FieldRef Name="Provider"/>
<Value Type="Text">{Param1}</Value>
</Eq>
</And>
</Where>
<OrderBy>
<FieldRef Name="ID" Ascending="FALSE"></FieldRef>
</OrderBy>
</Query>
我需要的是......
在伪代码中:
如果{Param1}等于“所有提供商”,则只过滤状态,其中状态等于“已提交”或“正在进行” 否则如果{Param1}不等于状态和提供者上的“所有提供者”过滤器,其中Status等于“已提交”或“正在进行”且提供者等于{Param1}
如何将其置于View XML架构中?
我知道可以这样做,因为微软已经在SharePoint中使用它,并且有第三方控件可以实现它。
例如......
1)在SP中,单击左侧导航菜单中的“列表”。
2)在最右边的搜索框'下方,您会看到带有下拉列表的“视图:”。
3)根据您选择的视图,URL的查询字符串包含“BaseType”,该“BaseType”将更改为您选择的值。如果选择“所有站点内容”,则“BaseType”将不在查询字符串中。
谢谢, 约书亚
答案 0 :(得分:1)
首先,我认为您在提供商字段中的adding a filter webpart效果更好,因为这样您就不会使用空白值进行过滤。
如果您必须有一个过滤“All Providers”的参数,您可以在列表调用AllProviders上创建一个计算字段,并使用以下公式:
="All Providers"
然后允许您输入查询子句:
<Query>
<Where>
<And>
<Or>
<Eq>
<FieldRef Name="AllProviders"/>
<Value Type="Text">{Param1}</Value>
</Eq>
<Eq>
<FieldRef Name="Provider"/>
<Value Type="Text">{Param1}</Value>
</Eq>
</Or>
<Or>
<Eq>
<FieldRef Name="Status"/>
<Value Type="Lookup">In Progress</Value>
</Eq>
<Eq>
<FieldRef Name="Status"/>
<Value Type="Lookup">Submitted</Value>
</Eq>
</Or>
</And>
</Where>
</Query>
“状态”字段将始终与“正在进行”或“已提交”匹配。
如果您的参数=“所有提供商”,那么您将匹配计算字段,否则您将匹配提供商字段。
请注意,这确实会阻止您向提供商调用“所有提供商”。