如何检测 Primefaces 数据表中的行选择?
How to detect row selection in Primefaces Datatable?
我使用 Prime Faces 6.2 构建复选框列。有这个样本:
<p:dataTable id="List"
value="#{tickets}"
lazy="true"
paginator="true"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
currentPageReportTemplate="{startRecord}-{endRecord} из {totalRecords}"
rows="20"
rowKey="#{ticket.id}"
selection="#{ticketForm.abstractMTSBUExportTickets}"
var="ticket"
emptyMessage="Записи в данной категории отсутствуют">
<p:column selectionMode="multiple" style="width:40px; text-align:center">
<!-- <p:ajax event="click" listener="#{form.abstractMTSBUExportTickets}" /> --> // first try
<!-- <p:commandLink id="select" action="doSome" /> --> // second try
</p:column>
使用 ajax 的目的是在至少选中一个复选框时使页面上的某些按钮可见。
首先,我尝试将 p:ajax 标签插入列标签但出现异常:
<p:ajax> Unable to attach behavior to non-ClientBehaviorHolder parent
更明显的方法是将命令 link 插入其中,但它什么也没做。
那么,有什么做法可以做到这一点吗?提前感谢您的回答。
是的,你很接近,但你是什么 Ajax 在数据表上而不是在复选框上。 PF 在数据表上提供了这两个 Ajax 事件,用于通知或选中或取消选中框...
<p:datatable>
<p:ajax event="rowSelect" listener="#{dtSelectionView.onRowSelect}" update=":form:mybutton" />
<p:ajax event="rowUnselect" listener="#{dtSelectionView.onRowUnselect}" update=":form:mybutton" />
...
</p:datatable>
有关详细信息,请参阅展示柜中的 Select 事件示例:https://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml
您可以简单地执行类似 Select 的操作,Unselect 方法将触发更新您的选择,您可以使用 EL 表达式启用按钮,例如...
<p:commandButton id="mybutton" disabled="#{ticketForm.abstractMTSBUExportTickets.size > 0}" />
我使用 Prime Faces 6.2 构建复选框列。有这个样本:
<p:dataTable id="List"
value="#{tickets}"
lazy="true"
paginator="true"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
currentPageReportTemplate="{startRecord}-{endRecord} из {totalRecords}"
rows="20"
rowKey="#{ticket.id}"
selection="#{ticketForm.abstractMTSBUExportTickets}"
var="ticket"
emptyMessage="Записи в данной категории отсутствуют">
<p:column selectionMode="multiple" style="width:40px; text-align:center">
<!-- <p:ajax event="click" listener="#{form.abstractMTSBUExportTickets}" /> --> // first try
<!-- <p:commandLink id="select" action="doSome" /> --> // second try
</p:column>
使用 ajax 的目的是在至少选中一个复选框时使页面上的某些按钮可见。 首先,我尝试将 p:ajax 标签插入列标签但出现异常:
<p:ajax> Unable to attach behavior to non-ClientBehaviorHolder parent
更明显的方法是将命令 link 插入其中,但它什么也没做。 那么,有什么做法可以做到这一点吗?提前感谢您的回答。
是的,你很接近,但你是什么 Ajax 在数据表上而不是在复选框上。 PF 在数据表上提供了这两个 Ajax 事件,用于通知或选中或取消选中框...
<p:datatable>
<p:ajax event="rowSelect" listener="#{dtSelectionView.onRowSelect}" update=":form:mybutton" />
<p:ajax event="rowUnselect" listener="#{dtSelectionView.onRowUnselect}" update=":form:mybutton" />
...
</p:datatable>
有关详细信息,请参阅展示柜中的 Select 事件示例:https://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml
您可以简单地执行类似 Select 的操作,Unselect 方法将触发更新您的选择,您可以使用 EL 表达式启用按钮,例如...
<p:commandButton id="mybutton" disabled="#{ticketForm.abstractMTSBUExportTickets.size > 0}" />