使用规划器中的排序提示

命名空间:microsoft.graph

规划器中的对象可根据排序提示识别排序顺序。 排序提示值均为字符串。 客户端可以根据其中的字符的序数值对字符串进行排序以识别项目的顺序。 从字符串开头比较字符,直到字符的序数值中出现差异,或一个字符串结束,在这种情况下,较短字符串将优先于较长字符串进行排序。 此类值可包括序数 32(空格)和 126(~)之间的任何字符

例如,带有排序提示 a 的项目(序数值 97)将置于另一个带有排序提示 z 的项目(序数值 122)之前。 带有排序提示 abc 的项目(序数值 97、98、99)将置于另一个带有排序提示 abd 的项目(序数值 97、98、100)之前。 由于所有现有的字符均相同,而 a 较短,带有排序提示 a 的项目将置于另一个带有排序提示 ab 的项目之前。

由此服务计算所有排序提示值。 客户端可通过指定项目的排序提示为项目重新排序,而在两个项目之间移动此项目可通过将排序提示设为以下值实现:<previous order hint> <next order hint>!,其中,在所需的新位置前出现的项目的排序提示会替换 <previous order hint>,而在所需的新位置后出现的项目的排序提示会替换 <next order hint>。 这些排序提示值之间有空格字符,整个值以 ! 为后缀。 如果任何一项不存在,应使用空字符串代替。 此值由之前的计算构成,可以在客户端中使用,为像服务返回的排序提示这样的项目排序。 一旦客户端在更新中发送这些值,服务将计算在所需位置排序的短型值。

请注意,为了清楚起见,在下列示例中,实际的排序提示值用单引号字符 (') 括起,但这些字符不属于数据,不可发送到服务。

例如,请考虑以下按排序提示顺序排列的列表:

  1. 第 1 项(排序提示:'5637'
  2. 第 2 项(排序提示:'adhg'

将第 3 项放置在第 1 项之前,然后将第 4 项置于第 1 项和第 2 项之间,再将第 5 项置于第 2 项之后,即可在客户端上创建下列排序提示。

  1. 第 3 项(排序提示:' 5637!'
  2. 第 1 项(排序提示:'5637'
  3. 第 4 项(排序提示:'5637 adhg!'
  4. 第 2 项(排序提示:'adhg'
  5. 第 5 项(排序提示:'adhg !'

然后,将第 1 项移动至列表末尾,会生成:

  1. 第 3 项(排序提示:' 5637!'
  2. 第 4 项(排序提示:'5637 adhg!'
  3. 第 2 项(排序提示:'adhg'
  4. 第 5 项(排序提示:'adhg !'
  5. 第 1 项(排序提示:'adhg ! !'

最后将第 5 项移动至第 3 项和第 4 项之间,会生成:

  1. 第 3 项(排序提示:' 5637!'
  2. 第 5 项(排序提示:' 5637! 5637 adhg!!'
  3. 第 4 项(排序提示:'5637 adhg!'
  4. 第 2 项(排序提示:'adhg'
  5. 第 1 项(排序提示:'adhg ! !'

一旦将这些排序提示值更改发送到修补程序请求,此服务将计算相应的值,这些值可以保持客户端安排的顺序。 如果在 PATCH 请求中指定 return=representation 首选项,客户端可立即获取此类值。 适用于上述情况的值可能类似于以下内容(实际值可能有所不同)。

  1. 第 3 项(排序提示:'432b'
  2. 第 5 项(排序提示:'6F"#'
  3. 第 4 项(排序提示:'7A$6'
  4. 第 2 项(排序提示:'adhg'
  5. 第 1 项(排序提示:'de5%'

排序提示可指定为在列表中创建为 ! 的首个项目,因为在这种情况下,根本不存在上一个或下一个项目,然而,这不是必须的,因为如果未在创建项目期间指定值,服务会为项目上的所有排序提示值自动生成值。 以下示例表明将项目置于之前为空的列表中时,应使用排序提示。 添加第一项:

  1. 第 1 项(排序提示:' !'

将第二项添加到顶部:

  1. 第 2 项(排序提示:' !!'
  2. 第 1 项(排序提示:' !'

将第三项添加到底部:

  1. 第 2 项(排序提示:' !!'
  2. 第 1 项(排序提示:' !'
  3. 第 3 项(排序提示:' ! !'