我有一个表格,显示表格中的两列,第三列带有用户可以选中和取消选中的复选框。
附近是一个提交更改按钮,当单击该按钮时,我想向下迭代表的行并根据复选标记的状态采取不同的操作。现在该表是不可选择的。
我已经摆弄了一天多,我想我可能只需要更改为 ADF 多选表,而不是一列复选框,只需允许用户选择和取消选择并使用 selectedrows 集合采取行动。
有任何想法吗?
我有一个表格,显示表格中的两列,第三列带有用户可以选中和取消选中的复选框。
附近是一个提交更改按钮,当单击该按钮时,我想向下迭代表的行并根据复选标记的状态采取不同的操作。现在该表是不可选择的。
我已经摆弄了一天多,我想我可能只需要更改为 ADF 多选表,而不是一列复选框,只需允许用户选择和取消选择并使用 selectedrows 集合采取行动。
有任何想法吗?
我想出了一个不太脏的解决方法。鉴于您可以随时从 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 博客上找到的所有行的功能是
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);
}