Skip to main content

LWC Update Single Record Datatable

Requirement :



Create a LWC in which get the contact records in Datatable and Update single record.
Or in other words
Update Single Record through Datatable.

cmpDatatableUpdateSingleRecord.html
<template>    
    <lightning-card title="Update Contact Record" icon-name="custom:custom63">
        <div class="slds-m-around_medium">
            <template if:true={contact.data}>
                <lightning-datatable
                    key-field="Id"
                    data={contact.data}
                    columns={columns}
                    draft-values={draftValues}    
                    onsave={handleSave}>
</lightning-datatable>
            </template>
        </div>
    </lightning-card>
</template>
cmpDatatableUpdateSingleRecord.js
import { LightningElement,track,wire } from 'lwc';
import getContactList from '@salesforce/apex/cmpDataTableUpdateSingleRecordCls.getContactList';
import { updateRecord } from 'lightning/uiRecordApi';
import { refreshApex } from '@salesforce/apex';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import FIRSTNAME_FIELD from '@salesforce/schema/Contact.FirstName';
import LASTNAME_FIELD from '@salesforce/schema/Contact.LastName';
import ID_FIELD from '@salesforce/schema/Contact.Id';
const COLS = [       
        {label: 'First Name' ,fieldName: 'FirstName'editable: true},
        {label: 'Last Name'fieldName: 'LastName'editable: true},        
        {label: 'Email'fieldName: 'Email'editable: true}
];

export default class cmpDataTableUpdateSingleRecord extends LightningElement {
    @track error;
    @track columns = COLS;
    @track draftValues = [];
    @wire(getContactList)
    contact;
    handleSave(event){
        const fields = {};
        fields[ID_FIELD.fieldApiName] = event.detail.draftValues[0].Id;
        fields[FIRSTNAME_FIELD.fieldApiName] = event.detail.draftValues[0].FirstName;
        fields[LASTNAME_FIELD.fieldApiName] = event.detail.draftValues[0].LastName;
        const recordInput = {fields};
        updateRecord(recordInput)
        .then(() => {
            this.dispatchEvent(
                new ShowToastEvent({
                    title: 'Success',
                    message: 'Contact updated',
                    variant: 'success'
                })
            );
            // Clear all draft values
            this.draftValues = [];
            // Display fresh data in the datatable
            return refreshApex(this.contact);
        })
        .catch(error => {
            this.dispatchEvent(
                new ShowToastEvent({
                    title: 'Error creating record',
                    message: error.body.message,
                    variant: 'error'
                })
            );
        });
    }    
}
cmpDatatableUpdateSingleRecord.js-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>48.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightning__AppPage</target>
        <target>lightning__RecordPage</target>
        <target>lightning__HomePage</target>
        <target>lightning__Tab</target>
      </targets>
</LightningComponentBundle>
cmpDatatableUpdateSingleRecordCls.cls
public with sharing class cmpDataTableUpdateSingleRecordCls {    
    @AuraEnabled(cacheable=true)    
    public static list<ContactgetContactList(){
        return[
            SELECT Id,FirstName,LastName,Phone,Email,Title
            FROM Contact
            WITH SECURITY_ENFORCED
            LIMIT 10
        ];
    }
}
Output:

Other Useful Blog

Lightning Component

Happy Learning !!

Comments

Popular posts from this blog

LWC Show Records In Table

Requirement : ‹ › Create a LWC component which will show the most recently created 10 Opportunity from the org and show them in table having Name , Close Date , Stage Name , Type and Create . or in other words Show Opportunity data in table format. cmpOpportunityRecords.html < template >      < lightning-card   title = "Opportunity Records"   icon-name = "standard:opportunity" >                  < lightning-datatable                            data = {data}                columns = {columns}                key-field = "Id" >          </ lightning-...

LWC Decorators

Decorators : ‹ › In LWC decorators are used to add functionality to a property or function. There are three types of decorators : 1. @track 2. @api 3. @wire @track : It is used to make properties or methods in LWC is private. This properties is not accessible outside the LWC in which it is declared. @api : It is used to make properties or methods in LWC is public. This way they are accessible outside of the component in which they are declared. For ex : parent component can set the value of the properties in the child component. @wire : It is used to read the Salesforce data from apex class into LWC. It is generally used while making the server call to apex class. LWC Properties : There are two type of LWC properties. 1. Reactive Properties 2. Non-Reactive Properties Reactive Properties : In case of reactive properties , value of the properties change when the component re-render. There are two types of Reactive Properties. 1. Public properties...