选择初始行CoreTable

时间:2012-08-13 10:34:38

标签: jsf-2 myfaces trinidad

我想要显示启用选择倍数的<tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">。 我使用List进行集合,当我从带有部分触发器的<tr:selectManyCheckbox> valueChangeListener中选择一个值时,将从数据库获取值。

对于返回的每一行,如果某个值为true,我希望此行在<tr:table value="#{mybean.tableValue} binding="#{mybean.tableBinding}">

中标记为已选中

我认为问题是当 valueChangeEvent 运行时我的绑定值没有更新,尽管我把 binding.setValue 数据库的结果(我检查了{ {1}}不等于binding.getRowCount()),然后选择的值不正确)

知道绑定rowCount为什么不等于table的值?

更新:

mybean.tableValue.size()

谢谢!

1 个答案:

答案 0 :(得分:0)

解决!我更改了valueChangeListener:

public void valuesChangeListener(ValueChangeEvent event) {
        if (event != null) {
            List<Integer> valores = (List<Integer>) event.getNewValue();
            data2Values.addAll(databaseDAO.search(valores));
            tableBinding.getSelectedRowKeys().clear;
            tableBinding.setValue(data2Values);
            for (int x = 0; x < tableBinding.getRowCount(); x++) {
                dataEntity row = (dataEntity) tableBinding.getRowData(x);
                tableBinding.setRowIndex(x);
                Object key = tableBinding.getRowKey();
                if (row.isTrue()) {                    
                    tableBinding.getSelectedRowKeys().add(key);
                } else {
                    tableBinding.getSelectedRowKeys().remove(key);
                }
            }
            tableBinding.setVar("item");
            FacesContext context = FacesContext.getCurrentInstance();
            context.renderResponse();
        }

    }