【问题标题】:JSF Primefaces set button enabled when table row is selected选择表格行时启用 JSF Primefaces 设置按钮
【发布时间】:2013-06-16 20:24:31
【问题描述】:

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

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

【问题讨论】:

  • 提供您尝试过的代码。选择行时,您必须设置enable=trueupdate 删除按钮。
  • 有几种方法可以在 PF 数据表中选择一行。请告诉/展示你是如何做到的。只有这样我们才能知道如何以这种方式钩住听众。
  • 我在主题里贴了代码

标签: javascript jsf primefaces


【解决方案1】:

感谢 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;
}

希望这对其他人有所帮助

【讨论】:

    【解决方案2】:

    一个解决方案可能是使用

    &lt;p:ajax event="rowSelect" update=":deleteButton" listener="#{bean.someListener}" /&gt;

    在数据表中。

    这会捕获行选择事件,调用监听器并更新按钮。

    现在您可以在支持 bean 中定义侦听器,它只更新布尔实例变量的值,反映视图中按钮的禁用/启用状态:

    &lt;p:commandButton id="deleteButton" value="Delete" disabled="#{bean.selectedBoolean}" /&gt;

    您可以查看 primefaces 展示以了解类似情况:

    http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多