SDT 按数字字段排序
SDT sort by numeric field
我有一个带 collection 的 SDT,它来自客户发送的 XML。
有时他们以错误的顺序发送项目,比如倒序,所以我必须对它进行排序。
但是 Genexus 中的排序函数是逐字节排序而不是数字排序,当 collection 大于 10 项时,结果为:
<sdt>
<field1>something</field1>
<colection>
<item>
<itemcode>1</itemcode>
<itemDescription>ITEM 1</itemDescription>
</item>
<item>
<itemcode>10</itemcode>
<itemDescription>1ITEM 10</itemDescription>
</item>
<item>
<itemcode>2</itemcode>
<itemDescription>ITEM 2</itemDescription>
</item>
<item>
<itemcode>20</itemcode>
<itemDescription>ITEM 20</itemDescription>
</item>
</collection>
</sdt>
如何按照数字顺序对其进行排序?
Leopereshz,
它会是这样的:
&SDT.collection.sort('itemcode')
如果它想 降序:
&SDT.collection.sort('[itemcode]')
以防万一你想要多个排序:
&SDT.collection.sort('itemcode,itemDescription')
甚至合并:
&SDT.collection.sort('[itemcode],itemDescription')
其中&SDT为SDT类型变量
谢谢桑德罗。
我认为是逐字节排序的原因是因为SDT中字段的类型是字符串。如果该字段是整数,Genexus 可能会正确排序。
更改文件类型时需要小心,因为它用于 Web 服务,因此它可能会破坏第三方集成,但我会分析其可行性。
我有一个带 collection 的 SDT,它来自客户发送的 XML。 有时他们以错误的顺序发送项目,比如倒序,所以我必须对它进行排序。 但是 Genexus 中的排序函数是逐字节排序而不是数字排序,当 collection 大于 10 项时,结果为:
<sdt>
<field1>something</field1>
<colection>
<item>
<itemcode>1</itemcode>
<itemDescription>ITEM 1</itemDescription>
</item>
<item>
<itemcode>10</itemcode>
<itemDescription>1ITEM 10</itemDescription>
</item>
<item>
<itemcode>2</itemcode>
<itemDescription>ITEM 2</itemDescription>
</item>
<item>
<itemcode>20</itemcode>
<itemDescription>ITEM 20</itemDescription>
</item>
</collection>
</sdt>
如何按照数字顺序对其进行排序?
Leopereshz,
它会是这样的:
&SDT.collection.sort('itemcode')
如果它想 降序:
&SDT.collection.sort('[itemcode]')
以防万一你想要多个排序:
&SDT.collection.sort('itemcode,itemDescription')
甚至合并:
&SDT.collection.sort('[itemcode],itemDescription')
其中&SDT为SDT类型变量
谢谢桑德罗。
我认为是逐字节排序的原因是因为SDT中字段的类型是字符串。如果该字段是整数,Genexus 可能会正确排序。 更改文件类型时需要小心,因为它用于 Web 服务,因此它可能会破坏第三方集成,但我会分析其可行性。