遍历ADF richtable中的所有行

时间:2011-10-05 22:18:06

标签: loops jdeveloper oracle-adf

我有一个表格显示表格中的两列,第三个表格带有用户可以选中和取消选中的复选框。

附近是提交更改按钮,当单击该按钮时,我想迭代表格的行,并根据复选标记的状态采取不同的操作。现在该表是不可选择的。

我一直在调整这一天超过一天,我想我可能只需要更改为ADF多选表而不是一列复选框只是允许用户选择和取消选择并使用选择集合采取行动。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我想出了一个不太脏的工作。鉴于您可以随时从RichTable对象中获取一组选定行,我决定暂时将所有行设置为选中并获取所选行。

警告:在我当前的应用程序中,我正在处理的表未设置为允许选择,因此我不必担心清除选择,因为它在刷新完成后被抛出。

    // set all rows in the table to selected so they can be iterated through
    selectAllRowsInTable( rolesGrantedAndAvailableTable );
    RowKeySet rSet = rolesGrantedAndAvailableTable.getSelectedRowKeys();

    Iterator selectedEmpIter = rSet.iterator();
    DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCIteratorBinding roleIter = bindings.findIteratorBinding("usersGrantedAndAvailableRolesView1Iterator");
    RowSetIterator roleRSIter = roleIter.getRowSetIterator();

    // iterate through all rows checking checkmark status and deciding if the roles need to be granted, revoked, or no action be taken
    while(selectedEmpIter.hasNext())
    {
        // Do your stuff with each row here
    }

选择我在AMIS blogs找到的所有行的功能是

public void selectAllRowsInTable( RichTable rt )
{
      RowKeySet rks = new RowKeySetImpl();
      CollectionModel model = (CollectionModel)rt.getValue();
      int rowcount = model.getRowCount();

      for( int i = 0; i < rowcount; i++ )
      {
            model.setRowIndex(i);
            Object key = model.getRowKey();
            rks.add(key);
      }

      rt.setSelectedRowKeys(rks);
}