从外部对话框保存后,我将尝试从外部对话框更新行 rowExpansion
不将整个表单更新为“不关闭”。我只想更新刚从中编辑的子行 dataTable
行的扩展。
这个 idCommandButtonDetailProductChild
按钮调用 idDialogDetailProduct
对话框,可以在其中编辑数据。并在使用 idCommandButtonUpdate
按钮我想要的是 idTableDetailProductChild
在没有 rowExpansion
结束。
我的代码如下:
productslist.xhtml(带行扩展的数据表)
<!-- PRODUCT LIST -->
<p:dataTable id="idTableDetailProduct"
paginator="false"
value="#{productController.productDetailDTOs}"
var="productDetail"
selection="#{productController.selectedProductDTOs}"
rowKey="#{productDetail.id}"
emptyMessage="#{diccBean.msg['product.productNotFound']]}"
scrollable="true"
scrollHeight="600">
...
<p:rowExpansion>
<!-- PRODUCT LIST CHILD -->
<p:dataTable id="idTableDetailProductChild"
paginator="false"
value="#{productDetail.productDTO.listProductsChild}"
var="productChild"
rowKey="#{productDetail.id}"
emptyMessage="#{diccBean.msg['product.productChildNotFound']}"
scrollable="true">
<!-- VIEW PRODUCT DETAIL -->
<p:commandButton
id="idCommandButtonDetailProductChild"
title="#{diccBean.msg['product.detailProduct']}"
icon="fa fa-fw fa-search"
action="#{productController.initDetailProduct}"
oncomplete="PF('widgetVarDetailProduct').show();"
update="tabViewDetalle:idDialogDetailProduct">
<f:setPropertyActionListener value="#{productChild.productDetailDTO.id}" target="#{productController.productDetailId}"/>
</p:commandButton>
productdialog.xhtml(从中更新行扩展的子行)
<h:body>
<ui:composition>
<p:dialog id="idDialogDetailProduct"
header="#{diccBean.msg['product.tittleDetailProduct']]}"
resizable="false"
widgetVar="widgetVarDetailProduct"
modal="true"
width="1200"
appendTo="@(body)"
binding="#{productController.idDialogDetailProduct}">
<h:form id="formDetailProduct">
...
<!-- SAVE COMPONENT BUTTON -->
<p:commandButton
id="idCommandButtonUpdate"
value="Componente: #{diccBean.msg['actions.save']}"
action="#{productController.actionUpdate}"
process="@form"
icon="fa fa-fw fa-check"
update="tabViewDetalle:idTableDetailProduct" />
</h:form>
</p:dialog>
</ui:composition>
</h:body>
1条答案
按热度按时间uwopmtnx1#
通过将父行的索引放入“更新”属性中,可以只更新行扩展(子数据表)的一行,而不关闭它。
例如,如果父行是项目3,则如下所示:
要动态执行此操作,我们可以通过传递父元素的索引来执行此操作:
父行的索引可以通过在父数据表中添加以下属性获得:
我们将其设置为bean,如下所示:
那么解决方案如下:
productslist.xhtml
productcontroller bean(java)
productdialog.xhtml