2016-12-14 3 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 должен вызывать первый rowSelect event jsf primefaces

Как мы можем запускать функцию rowSelect even/ajax автоматически при запуске события rowToggle?

ответ

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 Я обновляю скрипт, он должен работать сейчас –

Смежные вопросы