我有一个表面p:dataTable和
InCell editing enabled,并且想要为新添加的行触发/激活RowEditor.
XHTML的摘录
<p:commandButton id="btnAddEntry" value="Add new row" actionListener="#{myBean.addNewCar}" ... update="carTable growl" process="@this carTable ..."/> <p:dataTable id="carTable" var="car" value="#{myBean.cars}" ... editable="true"> <p:column ...> <p:cellEditor> ... </p:cellEditor> </p:column> ... <p:column ...> <p:rowEditor /> </p:column> ... </p:dataTable>
这是我目前为bean方法所做的:
public void addNewCar() { Car newCar = new Car(); cars.add(newCar); FacesContext facesContext = FacesContext.getCurrentInstance(); UIComponent uiTable = ComponentUtils.findComponent(facesContext.getViewRoot(),"carTable"); DataTable table = (DataTable) uiTable; final AjaxBehavior behavior = new AjaxBehavior(); RowEditEvent rowEditEvent = new RowEditEvent(uiTable,behavior,table.getRowData()); rowEditEvent.setPhaseId(PhaseId.UPDATE_MODEL_VALUES); table.broadcast(rowEditEvent); }
我不知道
>如果这是正确的方法
>如果是,将哪个对象传递给构造函数RowEditEvent(UIComponent组件,行为行为,Object对象)作为第3个参数
解决方法
如果facelet中只有一个数据表,请尝试使用此表
oncomplete="jQuery('.ui-datatable-data tr').last().find('span.ui-icon-pencil').each(function(){jQuery(this).click()});
将其添加到命令按钮.这应该工作.