Я придумал работу, которая не слишком грязная. Учитывая, что в любое время вы можете получить набор выбранных строк из объекта 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 is
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);
}