我有一个表面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()});
将其添加到命令按钮.这应该工作.