Lightning Data Table with Pre populated selected records in Lightning Web Components
In some scenarios we need auto populate selected checkbox for records in lightning-datatable on page load. In this post we also covered how to use wrapper class in Lightning web components (LWC).Let's see how to populate preselected rows in LWC data table.Also Check: How To Add Hyper Link For Name Column In lightning-datatable in LWC
We have a key-field attribute in lightning-datatable tag which is unique for every row in the table and based on this field only we can populate pre selected checkbox in data table. By using "selected-rows" attribute we can set the on load selected records in lightning-datatable, this is a array of unique key-field values. As per the requirements we set this attribute value in code.
Example for preselected rows/records in LWC data table:
Display all opportunity records and all these records should be pre selected.
Step1: Create Apex class: OpportunityController.
public with sharing class OpportunityController {
@AuraEnabled(cacheable=true)
public static oppWrapper getOpportunityRecords(){
oppWrapper ow = new oppWrapper();
ow.oppList = [SELECT Id, Name, StageName,Amount From Opportunity LIMIT 100];
Set<Id> selectedOppIdSet = new Set<Id>();
for(Opportunity opp: ow.oppList){
selectedOppIdSet.add(opp.Id);
}
ow.selectedIdSet = selectedOppIdSet;
return ow;
}
public class oppWrapper{
@AuraEnabled public List<opportunity> oppList {get; set;}
@AuraEnabled public set<Id> selectedIdSet {get; set;}
}
}
Step2: Create New lightning web component: preSelectedLightningDataTable.
preSelectedLightningDataTable.js
import { LightningElement,track,wire } from 'lwc';
import getOpportunityList from '@salesforce/apex/OpportunityController.getOpportunityRecords';
const COLS=[
{label:'Name',fieldName:'Name', type:'text'},
{label:'Stage',fieldName:'StageName', type:'text'},
{label:'Amount',fieldName:'Amount', type:'currency'}
];
export default class PreSelectedLightningDataTable extends LightningElement {
oppList;
cols = COLS;
@track preSelectedRows;
@wire(getOpportunityList)
getOpportunityList(result){
if(result.data) {
this.oppList=result.data.oppList;
this.preSelectedRows = result.data.selectedIdSet;
this.errorList=undefined;
}else if(result.error){
this.oppList=undefined;
this.errorList=result.error;
}
}
}
preSelectedLightningDataTable.html
<template>
<lightning-card title="Opportunity Records">
<div class="slds-box">
<lightning-datatable selected-rows={preSelectedRows}
data={oppList} columns={cols} key-field="Id">
</lightning-datatable>
</div>
</lightning-card>
</template>
Output: Data Table with Pre populated selected checkbox records in Lightning Web Components.
HI , I tried to preselect rows in lighting data table, it is not working for me, I tried multiple options , nothing seems to workout. Can you please help me.
ReplyDelete