2

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

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

4

2 回答 2

5

感谢 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}"/>

在我的 bean 中:

private Boolean disabled = true;

// getter and setter

public void onRowSelect(SelectEvent event) {
    disabled = false;
}

希望这对其他人有帮助

于 2013-06-17T20:47:09.253 回答
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

希望这可以帮助。

于 2013-06-17T15:38:46.833 回答