SharePoint 2013 CAML查询OrderBy未正确排序

时间:2015-07-08 20:51:53

标签: sharepoint caml

我使用CAML查询从列表中抓取一些项目。它将项目拉入数据表,然后将其设置为gridview控件的数据源。

一切正常,直到我意识到它正在使用ID字段对项目进行排序。我想按字段Target_x0020_Id排序,所以我按顺序排序,但是当我添加它时它没有改变行为。

这是我的疑问:

WhereEqFieldRefName =' Target_x0020_Id'值类型='文字' 900 /值/ EqWhereOrderByFieldRef名称=' Target_x0020_Id' / FieldRef / OrderBy

我添加的唯一内容是orderby元素。 (对不起,我在发布代码时遇到了一些问题而没有尝试在帖子中进行渲染)

1 个答案:

答案 0 :(得分:0)

我只能假设这是你正在使用的CAML

<Where>
  <Eq>
    <FieldRefName='Target_x0020_Id'>
    <Value Type='Text'>900</Value>
  </Eq>
<Where>
<OrderBy>
  <FieldRef Name='Target_x0020_Id'></FieldRef>
</OrderBy>

我看到三个明显的错误。

  1. 在cam <Eq>部分的FieldRef和Name之间缺少空格。
  2. 结束<where>缺少正斜杠。
  3. <OrderBy>中的FieldRef标记不正确。它自我关闭
  4. 这应该是正确的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;。