如何在A对象上使用sort =“auto”?

时间:2017-08-23 15:02:02

标签: groovy zk zul

我有一个listheader元素,其中设置了sort =“auto”,但是当我单击该列时,列表不会排序。箭头显示和反向,但列表顺序不会改变。

附加到列表中的组件是org.zkoss.zul.A个对象,这似乎是排序不起作用的原因。

是否有一种解决方法可以对列表项为A对象的列表框进行排序?

我的祖尔:

<listbox id="myList" checkmark="true" multiple="true">
  <listhead>
    <listheader id='select' label="" width="30px" align="left"/>
    <listheader label="myLabel" width="75px" sort="auto"/>
  </listhead>
</listbox>

常规:

Listitem li = new Listitem(value: "myId")
li.appendChild(new Listcell())
Listcell listcell = new Listcell()
Long theId = "12345"
A link = new A(label: theId.toString(), style: "color:blue;")
listcell.appendChild(invoiceLink)
li.appendChild(listcell)

2 个答案:

答案 0 :(得分:0)

我正在使用MVVM方法,这就是我对列表框进行排序的方式

<listbox>
     <listhead>
        <listheader label="Hopper" width="60px" sort="auto(hopperCode)" />
        <listheader label="Stop Time" width="80px" sort="auto(startTime)" />
    </listhead>
    <template name="model">
        <listitem>
            <listcell label="@load(each.hopperCode)" />
            <listcell label="@load(each.startTime)" />
        </listitem>
    </template>
</listbox>

答案 1 :(得分:0)

根据this paragraph in the documentation,按列表单元格的标签对自动排序进行排序。您没有使用Listcell.setLabel(),但会向其附加A个组件。由于listcells&#39;标签都是一样的(即&#34;&#34;),排序不做任何事情。

试试setting custom comparators。为此,我建议使用模型而不是自己创建列表项。