2016-12-14 96 views
0
<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 should call first rowSelect event jsf primefaces

如何觸發rowToggle事件觸發時自動選擇even/ajax自動調用?

回答

3

您可以覆蓋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; 
}; 
})(); 
+0

第一次,當我切換行,其工作正常,但我選擇另一行,它heighlight行和selection'selection =「#{ generalJournalEntryMB.generalJournalEntry}「'記錄未更新。你可以更新這個腳本嗎? –

+0

@ShahidGhafoor我更新腳本,它現在應該工作 –