我使用CAML查询从列表中抓取一些项目。它将项目拉入数据表,然后将其设置为gridview控件的数据源。
一切正常,直到我意识到它正在使用ID字段对项目进行排序。我想按字段Target_x0020_Id排序,所以我按顺序排序,但是当我添加它时它没有改变行为。
这是我的疑问:
WhereEqFieldRefName =' Target_x0020_Id'值类型='文字' 900 /值/ EqWhereOrderByFieldRef名称=' Target_x0020_Id' / FieldRef / OrderBy
我添加的唯一内容是orderby元素。 (对不起,我在发布代码时遇到了一些问题而没有尝试在帖子中进行渲染)
答案 0 :(得分:0)
我只能假设这是你正在使用的CAML
<Where>
<Eq>
<FieldRefName='Target_x0020_Id'>
<Value Type='Text'>900</Value>
</Eq>
<Where>
<OrderBy>
<FieldRef Name='Target_x0020_Id'></FieldRef>
</OrderBy>
我看到三个明显的错误。
<Eq>
部分的FieldRef和Name之间缺少空格。<where>
缺少正斜杠。<OrderBy>
中的FieldRef标记不正确。它自我关闭这应该是正确的caml
<Where>
<Eq>
<FieldRef Name='Target_x0020_Id'>
<Value Type='Text'>900</Value>
</Eq>
</Where>
<OrderBy>
<FieldRef Name='Target_x0020_Id' />
</OrderBy>
我确实看到您返回Target_x0020_Id等于900的所有项目,然后按Target_x0020_Id对所有这些项目进行排序。由于此字段始终为900,因此您的排序无法正常工作。
另外,Target_x0020_Id真的是一个文本字段吗?如果它是数字的,您应该将类型转换为&#39; Number&#39;而不是&#39; Text&#39;。