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

时间:2011-01-06 20:43:32

标签: javascript sharepoint soap wss-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 - 无法完成此操作。请再试一次。

删除用户查找会解析发布者。我哪里错了?

1 个答案:

答案 0 :(得分:4)

如果您想使用其显示名称,则无法使用LookupId="TRUE"Type="User"。它应该是:

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

有关更多示例,请参阅my answer here

修改

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

<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>