我正在使用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 - 无法完成此操作。请再试一次。
删除用户查找会解析发布者。我哪里错了?
答案 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>