【问题标题】:Need Help w/ SharePoint CAML Query需要使用 SharePoint CAML 查询的帮助
【发布时间】:2011-11-05 17:19:56
【问题描述】:

这就是我正在做的事情(这是在 Google 上进行的快速搜索,只是最初的结果之一):

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} 不等于“所有提供者”过滤状态和提供者,其中状态等于“提交”或“进行中”并且提供者等于 {Param1}

如何将其放入 View XML 架构中?

我知道这是可以做到的,因为 Microsoft 已经在 SharePoint 中使用了它,并且有 3rd-party 控件可以做到这一点。

例如...

1) 在 SP 中,点击左侧导航菜单中的“列表”。

2) 在最右侧的搜索框下方,您会看到带有下拉菜单的“查看:”。

3) 根据您选择的视图,URL 的查询字符串包含更改为您选择的值的“BaseType”。如果选择“所有站点内容”,则查询字符串中会省略“BaseType”。

谢谢, 约书亚

【问题讨论】:

标签: sharepoint list caml


【解决方案1】:

首先,我认为提供者字段最好使用adding a filter webpart,因为这样可以不使用空白值进行过滤。

如果您必须有一个过滤“所有提供者”的参数,您可以在调用 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>

状态字段将始终匹配“进行中”或“已提交”。

如果您的参数 = "All Providers" 那么您将匹配计算字段,否则您将匹配 Provider 字段。

请注意,这确实会阻止您让 Provider 调用“All Providers”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多