How to show a dialog after the user select a row of a <p:datatable>?
我有这个数据表:
1 2 3 4 5 6 7 8 9 10 | <h:form id="form"> <p:dataTable id="tblInfo" var="ref" value="#{consultasBean.listaRefacciones}" paginator="true" rows="10" selectionMode="single" selection="#{consultasBean.refaccionSeleccionada}" rowKey="#{ref.idRefaccion}"> <p:column headerText="Equipo"> <h:outputText value="#{ref.equipo}" /> </p:column> <p:column headerText="Marca"> <h:outputText value="#{ref.marca}" /> </p:column> //More colums here... </p:dataTable> |
我想在用户选择一行后显示这个对话框:
1 2 3 4 5 6 7 | <p:dialog id="myDialog" widgetVar="refaccionDialog" header="Detalle Refaccion" resizable="false" width="300" showEffect="explode" hideEffect="explode"> <h:panelGrid id="display" columns="2" cellpadding="4"> <h:outputText value="Info:" /> <h:outputText value="#{consultasBean.refaccionSeleccionada.equipo}" /> </h:panelGrid> //More things here... </p:dialog> |
这是我的 bean 的一部分(viewscoped):
1 2 3 | private List<RefaccionBean> listaRefacciones = null; private RefaccionBean refaccionSeleccionada = null; // setters and getters... |
我知道我必须使用 p:ajax,但不知道如何使用。
我正在检查这个(示例 1 是我想要的),但信息太旧,现在不起作用。
请帮帮我。
只需在你的表中包含一个 p:ajax
1 | <p:ajax event="rowSelect" oncomplete="PF('refaccionDialog').show()" update=":dialogId" /> |
希望这会有所帮助。
数据表的
rowKey 属性写错了。
它应该如下
1 | rowKey="#{ref.idRefaccion}" |
数据表代码如下
1 2 3 4 5 6 7 8 9 10 11 | <h:form id="form"> <p:dataTable id="tblInfo" var="ref" value="#{consultasBean.listaRefacciones}" paginator="true" rows="10" selectionMode="single" selection="#{consultasBean.refaccionSeleccionada}" rowKey="#{ref.idRefaccion}"> <p:column headerText="Equipo"> <h:outputText value="#{ref.equipo}" /> </p:column> <p:column headerText="Marca"> <h:outputText value="#{ref.marca}" /> </p:column> //More colums here... </p:dataTable> |