Jsf 如何在更新表时保持primefaces行扩展处于打开状态?

Jsf 如何在更新表时保持primefaces行扩展处于打开状态?,jsf,primefaces,Jsf,Primefaces,嗨,我有一个带有p:rowToggler的datatable,所以当从行扩展启动弹出窗口时,在关闭弹出窗口后,我需要更新行中的一些标签。更新工作!但是争吵扩大了,破裂了。在关闭弹出窗口并更新内容后,如何保持打开行扩展。谢谢 弹出窗口的片段 数据表的片段 <h:form prependId="false" id="id1"> <h:panelGroup id="id2" > <p:dataTable

嗨,我有一个带有p:rowToggler的datatable,所以当从行扩展启动弹出窗口时,在关闭弹出窗口后,我需要更新行中的一些标签。更新工作!但是争吵扩大了,破裂了。在关闭弹出窗口并更新内容后,如何保持打开行扩展。谢谢

弹出窗口的片段


数据表的片段

<h:form prependId="false" id="id1"> 
            <h:panelGroup id="id2" >
                  <p:dataTable tableStyleClass="win" var="element"                                id="table1" value="#{myBean.list}"
                            selectionMode="single"  rowExpandMode="single" rowIndexVar="cont" widgetVar="table1"
                           selection="#{myBean.selectedRecord}" rowKey="#{element.id}"   >
<p:ajax event="rowToggle"    listener="#{myBean.methodBean(element)}" /> 
                     <p:column styleClass="rowTogglerStyle" 
<p:rowToggler collapseLabel="#{bundle.show}" 
 expandLabel="#{bundle.show}">
</p:rowToggler>                    
</p:column> 

</p:datatable>  </h:panelGroup>  </h:form>


如果保存展开的行元素id,可以这样做:

<p:dataTable expandedRow="#{element.id == myBean.expandedRowElementId}">
    <p:ajax event="rowToggle" listener="#{bean.setExpandedRowElementId(element.id)}"/>

如果保存展开的行元素id,可以这样做:

<p:dataTable expandedRow="#{element.id == myBean.expandedRowElementId}">
    <p:ajax event="rowToggle" listener="#{bean.setExpandedRowElementId(element.id)}"/>

嗨,问题是关闭弹出窗口后所选的行扩展仍然突出显示了类ui状态,因此我发现这样做可以通过p:ajax中onclomplete atributte中的javascript重新打开关闭的行扩展:

jQuery('tr.ui-state-highlight').find('td.rowtoglerstyle>div.ui-row-toggler').trigger('click')


我希望它对其他人有用。

您好,问题是关闭弹出窗口后所选的行扩展尚未高亮显示类ui状态,因此我发现这样做是为了通过p:ajax中onclomplete atributte中的javascript重新打开关闭的行扩展:

jQuery('tr.ui-state-highlight').find('td.rowtoglerstyle>div.ui-row-toggler').trigger('click')


我希望它对其他人有用。

谢谢@lastrest我正在尝试。谢谢@lastrest我正在尝试。
public void setExpandedRowElementId(String expandedRowElementId){
  if(this.expandedRowElementId != null && expandedRowElementId.equals(this.expandedRowElementId) 
  // if the id is equal the expansion is closed, so the expanded element must be set to null
     this.expandedRowElementId = null;
  else
     this.expandedRowElementId = expandedRowElementId;
}