我正在使用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-无法完成此操作。请再试一次。
删除用户查找即可解决发行者。我要去哪里错了?
最佳答案
如果要使用其显示名称,则不能使用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>