-
1. Re: rich:extendedDataTable select row from bean without ExtendedTableModel
chan32167 Apr 17, 2013 11:07 AM (in response to poretsky)try this:
<rich:extendedDataTable selectionMode="single"
selection="#{clienteDM.selection}" id="resultTable"
value="#{clienteController.clienteDataModel}" var="cliente"
rows="#{generalController.getFilasTablas('CLIENTES')}"
styleClass="widthSearchTable"
noDataLabel="#{msg.msj_tabla_vacia}">
<a4j:ajax event="selectionchange"
listener="#{clienteController.selectionListener}"
render="contentPanel, resultTable" />
...
</rich:extendedDataTable>
public void selectionListener(final AjaxBehaviorEvent event) {
UIExtendedDataTable dataTable = (UIExtendedDataTable) event
.getComponent();
Object originalKey = dataTable.getRowKey();
//We always have only 1 object on clienteDM.getSelection
for (Object selectionKey : clienteDM.getSelection()) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
//Do your logic here with
(Client) dataTable.getRowData();
}
}
//Clean the selection
clienteDM.setSelection(null);
dataTable.setRowKey(originalKey);
}
Hope it works for you... as soon as client selects one row from the datatable the selectionListener is fired with <a4j:ajax event="selectionchange" ... >
-
2. Re: rich:extendedDataTable select row from bean without ExtendedTableModel
poretsky Apr 18, 2013 1:51 AM (in response to chan32167)Thanks for your response but I have no problems selecting rows from a client (using selectionListener). I have difficulties selecting rows from a bean in way client could "see" selection changes. And I showed an example trying to change selection attribute from a bean hoping it will have effect on a client. Without success...
-
3. Re: rich:extendedDataTable select row from bean without ExtendedTableModel
poretsky Apr 18, 2013 3:13 AM (in response to poretsky)Solved!
It is useful to use sometimes source debugging. Here is right code snippet for server side row selection:
{code:java}
public void selectRow(Object row) {
if (getSelection()==null){
Collection<Object> s = new HashSet<Object>();
s.add(row);
setSelection(s);
}else{
getSelection().clear();
getSelection().add(row);
}
UIExtendedDataTable table = (UIExtendedDataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("main_form1:main_table1");
table.getAttributes().put("activeRowKey", row);
//table.setRowKey(row);
}
{code}