SharePoint - 在 GetListItems SOAP 调用上执行用户查找

发布于 2024-10-10 21:38:23 字数 821 浏览 3 评论 0原文

我使用 jQuery 和 WSS 3.0 SOAP 服务来检索和显示列表中的数据。我想按 CreatedBy 列过滤数据。这是我的 CAML 查询:

<Query>
<Where>
    <And>
        <Leq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
        </Leq>
        <Geq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
        </Geq>
        <Contains>
            <FieldRef Name="CreatedBy" LookupId="TRUE" />
            <Value Type="User">Smith</Value>
        </Contains>
    </And>
</Where>

当我执行此操作时,SharePoint 返回以下错误:

0x80004005 - 无法完成此操作。请再试一次。

删除用户查找可以解决颁发者问题。我哪里出错了?

I'm using jQuery and the WSS 3.0 SOAP service to retrieve and display data from a list. I'm wanting to filter the data by the CreatedBy column. Here's my CAML query:

<Query>
<Where>
    <And>
        <Leq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
        </Leq>
        <Geq>
            <FieldRef Name="Created" />
            <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
        </Geq>
        <Contains>
            <FieldRef Name="CreatedBy" LookupId="TRUE" />
            <Value Type="User">Smith</Value>
        </Contains>
    </And>
</Where>

When I execute this, SharePoint returns the following error:

0x80004005 - Cannot complete this action. Please try again.

Removing the user lookup resolves the issuer. Where am I going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恋你朝朝暮暮 2024-10-17 21:38:23

如果您想使用他们的显示名称,则不能使用 LookupId="TRUE"Type="User"。它应该是:

<Contains>
   <FieldRef Name="CreatedBy" />
   <Value Type="Text">Smith</Value>
</Contains>

有关更多示例,请参阅我的回答

编辑:

另外,我刚刚注意到您的 节点包含三个子节点。每个只能包含两个,这意味着你需要这样的东西:

<Where>
  <And>
    <And>
      <Leq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
      </Leq>
      <Geq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
      </Geq>
    </And>
    <Contains>
      <FieldRef Name="CreatedBy" />
      <Value Type="Text">Smith</Value>
    </Contains>
  </And>
</Where>

If you want to use their display name, then you cannot use LookupId="TRUE" or a Type="User". It should be:

<Contains>
   <FieldRef Name="CreatedBy" />
   <Value Type="Text">Smith</Value>
</Contains>

See my answer here for more examples.

Edit:

Also, I just noticed your <And></And> node contains three sub-nodes. Each one can only contain two, which means you need something like this:

<Where>
  <And>
    <And>
      <Leq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-8</Value>
      </Leq>
      <Geq>
        <FieldRef Name="Created" />
        <Value Type="DateTime" IncludeTimeValue="FALSE">2011-1-2</Value>
      </Geq>
    </And>
    <Contains>
      <FieldRef Name="CreatedBy" />
      <Value Type="Text">Smith</Value>
    </Contains>
  </And>
</Where>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文