我在表格中有一个用户列表,并且已禁用“删除”按钮。当我选择表格中的行时,我需要启用“删除”按钮。我怎么能这样做?
<p:dataTable value="#{userBean.patients}" var="item"
selectionMode="single" rowKey="#{item.id}"
selection="#{userBean.selected}"
onRowSelected="deleteButton.disabled='false';"> // HOW TO WRITE THIS EVENT CORRECTLY?????
// columns
</p:dataTable>
//This button must be enable after I click on any table row
<p:commandButton id="deleteButton" value="Delete" disabled="true" />
也许,我需要使用onRowClick事件。我不知道这个事件的名称
答案 0 :(得分:4)
一种解决方案可能是使用
<p:ajax event="rowSelect" update=":deleteButton" listener="#{bean.someListener}" />
在数据表中。
这会捕获行选择事件,调用侦听器并更新按钮。
现在你可以在支持bean中定义一个只更新布尔实例变量值的监听器,它反映了视图中按钮的禁用/启用状态:
<p:commandButton id="deleteButton" value="Delete" disabled="#{bean.selectedBoolean}" />
你可以看一下类似场景的primefaces展示:
http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf
希望这有帮助。
答案 1 :(得分:4)
感谢jsfviky71! 我写道:
<h:form id="form">
<p:dataTable value="#{bean.patients}" var="item"
selectionMode="single" rowKey="#{item.id}"
selection="#{bean.selected}" >
<p:ajax event="rowSelect" update=":form:deleteButton" listener="#{bean.onRowSelect}" />
// data in rows
</p:dataTable>
<p:commandButton id="deleteButton" value="Delete" disabled="#{bean.disabled}"/>
在我的豆子里:
private Boolean disabled = true;
// getter and setter
public void onRowSelect(SelectEvent event) {
disabled = false;
}
希望这会对其他人有所帮助