RowToggle应调用第一个Rowselect事件JSF PrimeFaces


<p:dataTable var="item" id="datatable-list" value="#{generalJournalEntryMB.generalJournalEntries}" rows="10"
                paginator="true" reflow="true" paginatorPosition="top" rowExpandMode="single"
                rendered="#{generalJournalEntryMB.generalJournalEntries.size() > 0}" rowIndexVar="rowIndex"
                paginatorTemplate="{CurrentPageReport}  {PreviousPageLink} {NextPageLink} " rowKey="#{item.id}"
                selectionMode="single" selection="#{generalJournalEntryMB.generalJournalEntry}" widgetVar="datatable-list">
                <p:column style="width:16px">
                        <p:rowToggler  />
                </p:column>
                <p:column headerText="Id">
                    <h:outputText value="#{item.id}" />
                </p:column>
                <p:column headerText="Description">
                    <h:outputText value="#{item.description}" />
                </p:column>
                <p:column headerText="Amount">
                    <h:outputText value="#{item.amount}" />
                </p:column>

                <p:column headerText="Reference">
                    <h:outputText value="#{item.reference}" />
                </p:column>
                <p:column headerText="State">
                    <h:outputText value="#{item.postingState.value}" />
                </p:column>
                <p:rowExpansion id="expand" rendered="true">
                    <p:panelGrid columns="2" columnClasses="label,value" style="width:300px">
                        <h:outputText value="Id:" />
                        <h:outputText value="1" />
                        <h:outputText value="Year" />
                        <h:outputText value="1983" />
                        <h:outputText value="Color:" />
                        <h:outputText value="White" />
                        <h:outputText value="Price" />
                        <h:outputText value="#{generalJournalEntryMB.price}" />
                    </p:panelGrid>
                </p:rowExpansion>
                <p:ajax event="rowSelect" listener="#{generalJournalEntryMB.rowSelectListener}" update="main:top-menu-bar" />
                <p:ajax event="rowToggle"  listener="#{generalJournalEntryMB.rowToggleListener}" update="main:top-menu-bar" />
            </p:dataTable>

当我不选择行而扩展行时,它一无所获。目前,我正在做的是首先选择行并将其展开以获得欲望结果。

当rowtoggle事件fire时,我们如何自动触发dev/ajax调用?

您可以覆盖PrimeFaces toggleExpansion函数,因此它在

之前执行selectRow
PrimeFaces.widget.DataTable.prototype.toggleExpansion = (function() {
 var cached_function = PrimeFaces.widget.DataTable.prototype.toggleExpansion;
 return function() {
     var row = arguments[0].closest('tr');
     if(this.cfg.selectionMode === 'single') {
         this.unselectAllRows();
     }
     if(this.cfg.selectionMode){
         this.selectRow(row, false);
     }    
     var result = cached_function.apply(this, arguments);
     return result;
 };
})();

最新更新