选择表行时,JSF Primefaces设置按钮

时间:2013-06-16 20:24:31

标签: javascript jsf primefaces

我在表格中有一个用户列表,并且已禁用“删除”按钮。当我选择表格中的行时,我需要启用“删除”按钮。我怎么能这样做?

<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事件。我不知道这个事件的名称

2 个答案:

答案 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;
}

希望这会对其他人有所帮助