Hello, currently tr:table supports selection of one row with attribute rowSelection="simple".
For better user experience we want to select a row with clicking on table row. To achieve this I did four minor changes in trinidad code base: 1) support "singleClick" in decoding phase 2) render a hidden field for storing index of clicked row 3) render a onclick for each TR in HTML output 4) add a JS function to Core.js ad 1) in TableRenderer.decodeSelection(FacesContext, UIComponent): // added singleClick condition, TableSelectOneRenderer will be used // for decoding if ("single".equals(selection) || "singleClick".equals(selection)) _selectOne.decode(context, treeTable); ad 2) TableRenderer.encodeAll(FacesContext, RenderingContext, UIComponent, FacesBean): // If rowSelection is singleClick we render a hidden field // for storing TR rowIndex if ("singleClick".equals(component.getAttributes().get(CoreTable.ROW_SELECTION_KEY.getName()))) { // Id is the same as rowSelection="single" uses String id = tContext.getTableId() + ":selected"; rw.startElement("input", null); rw.writeAttribute("type", "hidden", null); rw.writeAttribute("id", id, null); rw.writeAttribute("name", id, null); rw.endElement("input"); } ad 3) DesktopTableRenderer._renderTableRows(FacesContext, RenderingContext, TableRenderingContext, UIComponent) // for rowSelection="singleClick" render a onclick on each TR element if("singleClick".equals(component.getAttributes().get(CoreTable.ROW_SELECTION_KEY.getName()))) { final String hiddenFieldId= tContext.getTableId() + ":selected"; writer.writeAttribute("onclick", "onListClick(this,'" + hiddenFieldId +"')", null); } ad 4) and finally in Core.js function onListClick(rowEl, hiddenId) { var jumpValue = rowEl.rowIndex; var hiddenField = document.getElementById(hiddenId); hiddenField.value = jumpValue; return true; } TBD: -- indicating selected row with a nice CSS style -- support autoSubmit to deliver SelectionEvent immediately Any ideas, preferences? Regards, Martin Kočí