Hello folks, today we will discuss the Pre-populated selected records in LWC Datatable. In some scenarios, the selected checkbox for records in Lightning Datatable needs to be auto-populated. There is a key-field attribute in the LWC Datatable tag that is unique for each row in the table, and based on this field only we can populate pre-selected checkboxes in the data table. On loading LWC Datatable, we can set a unique key-field value in the “selected-rows” attribute. We set the value of this attribute in the code according to the requirements.
Also, check this: Vertical Navigation Bar in LWC
Key Highlights :
- Checkbox pre-selected on Datatable load.
- In LWC Datatable key field should be unique and use the same field values in the pre-selected array.
- Use the “selected-rows” attribute in LWC Datatable.
Code :
preselectedLWCDatatable.Html :
<template>
<lightning-card title="Accounts" icon-name="standard:account">
<div class="slds-m-around_medium">
<template if:true={data}>
<lightning-datatable key-field="Id" data={data} columns={columns} selected-rows={preSelectedRows}>
</lightning-datatable>
</template>
<template if:true={error}>
{error}>
</template>
</div>
</lightning-card>
</template>
preselectedLWCDatatable.Js:
import { LightningElement, wire, track } from 'lwc';
import retrieveAccounts from '@salesforce/apex/DataController.retrieveAccounts';
const columns = [
{ label: 'Name', fieldName: 'Name' },
{ label: 'Type', fieldName: 'Type' },
{ label: 'Email', fieldName: 'Email__c', type: 'email' },
{ label: 'BillingCountry', fieldName: 'BillingCountry' },
];
export default class PreselectedLWCDatatable extends LightningElement {
@track data;
@track error;
@track columns = columns;
@track preSelectedRows = [];
@wire(retrieveAccounts)
wiredAccount({ error, data }) {
if (data) {
this.data = data;
data.forEach(currentItem => {
this.preSelectedRows.push(currentItem.Id);
});
this.error = undefined;
} else if (error) {
this.error = error;
this.data = undefined;
}
}
}
preselectedLWCDatatable.js-meta.xml:
<?xml version="1.0"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>55.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__HomePage</target> </targets> </LightningComponentBundle>
