trinidad <tr:table>列表中列排序column sort,但对排序后的记录提交是key值对应错误,请给予帮助

jack_mark 2011-03-03

trinidad <tr:table>列表中列排序column sort,如下代码:

<tr:column  noWrap="true" sortProperty="name" sortable="true" headerText="对方" width="10%" headerNoWrap="true"
      id="headerT3name"   bandingShade="1" >
      <h:outputText value="#{objectVo.name}" id="name_text10" />
     </tr:column>
 

对列表中的“name”列排序后选择记录,选中记录,再对记录做操作时,在后台程序中得到选中的记录代码如下:
UIXTable t = (UIXTable) table;
        RowKeySet rowKeySet = t.getSelectedRowKeys();

但rowKeySet中得到rowkey值是记录在排序之前的值,然后到

 Iterator it = t.getSelectedRowKeys().iterator();

 while (it.hasNext()) {
            Integer key = (Integer) it.next();

            ObjectVo vo = (ObjectVo) t.getRowData(key);

}
其中得到的vo和页面列表排序后选中的记录不是同一条记录,

所以要请大家帮忙看<tr:table>列表排序后怎么对记录操作,不出错呢?

jack_mark 2011-03-21
有谁知道啊,快快帮忙啊!!!!
felixlee 2011-08-24
如果你用的trinidad版本是1.2.12或更早的,这样做就可以解决:

Iterator it = t.getSelectedRowKeys().iterator();
while (it.hasNext()) {
            Integer key = (Integer) it.next();
            t.setRowKey(key);
            ObjectVo vo = (ObjectVo) t.getRowData();
}

当你用带参数的getRowData方法去取值时,参数里的下标值表示的是当前在页面上看到的对应位置;
当用无参的getRowData时,前面用setRowKey方法设置的下标值表示的是后台model里面的数据的下标,这个model在表局部刷新时是不变的。
Global site tag (gtag.js) - Google Analytics