angular - How to do dynamically row grouping on PrimeNG Datatable? -


i using primeng datatable in angular 4 application. want perform row grouping based on selected field. example if user click on dealer region data should group dealer region, if user click on dealer state data should group according dealer state.

reference : https://www.primefaces.org/primeng/#/datatable/rowgroup

my view (html) file

<div id ="default"><span (click)="default()">default</span></div> <div id ="region"><span (click)="groupbydealerregion()">dealer region</span></div> <div id ="state"><span (click)="groupbydealerstate()">dealer state</span></div>    <p-datatable #dt1 [value]="(auditlist | orderby: {property: 'dealercode', direction: 1})"  rowgroupmode="subheader" sortfield = '{{groupfield}}' groupfield='{{groupfield}}'          expandablerowgroups="true"  id="datatable" name="datatable" exportfilename="audits-list" [sortablerowgroup]="false"  >         <p-header>         <div class="ui-helper-clearfix">             <button type="button" pbutton icon="fa-file-o" iconpos="left" label="csv" (click)="dt.exportcsv()" style="float:left"></button>         </div>     </p-header>      <ng-template ptemplate="rowgroupheader" let-rowdata>{{rowdata[groupfield]}}</ng-template>         <p-column field="dealercode" header="dealer code"  ></p-column>     <p-column field="dealername" header="dealer name"></p-column>     <p-column field="audittype" header="audit type"></p-column>     <p-column field="auditonsite" header="audit on-site"></p-column>  </p-datatable> 

component class

export class auditlistviewcomponent implements oninit {     groupfield: string = 'audittype';    @viewchild(datatable) dt: datatable;      constructor(private sessionservice : sessionservice,private auditservice : auditservice ){    }      auditlist: auditdetail[] = [];      ngoninit(): void {        this.getauditlist();      }     getauditlist(){      this.auditservice.getauditlist().then( auditlist => {         this.auditlist = auditlist;               });    }        groupbydealerregion(){                        this.sortedfield = "dealerregion";       this.groupfield = "dealerregion" ;     }     groupbydealerstate(){       this.sortedfield = "dealerstate";       this.groupfield = "dealerstate" ;    }     default(){      console.log("default() --->>>");      console.log(this.dt);     this.groupfield = 'audittype';      }   } 

i want bind component's groupfield variable groupfield attribute of data table. implement static row grouping. requirement group data when user click on grouping option.

i tried use datatable reference in component , change datatable attribute component neither working.

this.dt.groupfield = 'dealerstate'; 

looking solution. in advance.

this may not best solution out there, works. make dynamic row grouping work, have refresh entire datatable, after changing groupfield.

to refresh table, use boolean variable control visibility of datatable , use settimeout.

<p-datatable *ngif="display"></p-datatable> 

in .ts file, whenever change row grouping field,

this.display = false;     settimeout(() => this.display = true, 0); 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -