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 服务,因此它可能会破坏第三方集成,但我会分析其可行性。