Skip to main content

Latest Post

Record Types & Page Layout Strategy

  Record Types & Page Layout Strategy 💬 In plain words:   Record Types let one object act like different forms for different teams. Different picklist values, page layouts, and processes — same Account object. Use them for truly different business processes. Not for cosmetic layout changes. 📌 Example:   One Account object, two businesses: 'Retail Customer' record type shows B2C picklist values and layout. 'Enterprise Client' shows contract fields and a different sales process. Same table, two costumes. 🧠 One object, many costumes:   A Record Type is a costume on the same object — different picklists and layouts, same table underneath. Concept Record Types split one object into business variants. •   Each type can carry its own subset of picklist values, its own business process — Lead, Case and Opportunity stages — and its own page layout per profile. •   Lightning has changed the calculus. Dynamic Forms and conditional comp...

Adding Buttons in LWC DataTable Salesforce

Introduction:

In Salesforce Lightning Web Components (LWC), the DataTable component provides a powerful way to display tabular data. However, at times, we may need to enhance the functionality of the DataTable by adding buttons to perform custom actions on the data. In this blog post, we will explore how to add buttons to a DataTable in Salesforce LWC and handle the corresponding button click events.


Prerequisites:


Before we begin, make sure you have a basic understanding of Salesforce Lightning Web Components (LWC) and have a Salesforce Developer Edition org or sandbox available to try out the code examples.


Step 1: Create a New Lightning Web Component


To start, let's create a new Lightning Web Component to house our DataTable and the custom buttons. Open your Salesforce org and navigate to the Developer Console or your preferred IDE to create a new LWC with the name "DataTableWithButtons."


Step 2: Markup for DataTable with Buttons


In the HTML file (DataTableWithButtons.html) of your LWC, add the following code:


<template>

    <lightning-datatable

        key-field="id"

        data={data}

        columns={columns}

        onrowaction={handleRowAction}>

    </lightning-datatable>

</template>


Step 3: Add Buttons to Columns


In the JavaScript file (DataTableWithButtons.js) of your LWC, define the columns array and add buttons to one or more columns. For example, let's add an "Edit" button to the last column:


import { LightningElement } from 'lwc';


export default class DataTableWithButtons extends LightningElement {

    columns = [

        { label: 'Name', fieldName: 'name', type: 'text' },

        { label: 'Email', fieldName: 'email', type: 'email' },

        { label: 'Phone', fieldName: 'phone', type: 'phone' },

        {

            type: 'button',

            typeAttributes: {

                label: 'Edit',

                name: 'edit',

                title: 'Edit',

                disabled: false,

                value: 'edit',

                iconPosition: 'left',

            },

        },

    ];


    // Rest of the code...

}


Step 4: Handle Button Click Events


To handle the button click events, add the following method to your JavaScript file:


// Rest of the code...


handleRowAction(event) {

    const action = event.detail.action;

    const row = event.detail.row;


    if (action.name === 'edit') {

        // Perform the desired action when the "Edit" button is clicked

        // For example, navigate to a record edit page

        this.navigateToRecordEditPage(row.id);

    }

}


navigateToRecordEditPage(recordId) {

    // Use the Lightning Navigation service to navigate to the record edit page

    // For example:

    this[NavigationMixin.Navigate]({

        type: 'standard__recordPage',

        attributes: {

            recordId: recordId,

            actionName: 'edit',

        },

    });

}


Conclusion:


By following the steps outlined in this blog post, you can easily add custom buttons to a DataTable in Salesforce Lightning Web Components (LWC) and handle the button click events. This provides a flexible way to extend the functionality of the DataTable component and perform custom actions on the data. Feel free to explore further and add more buttons or customize the behavior based on your specific requirements.


Remember to test your LWC in your Salesforce org and leverage the available resources and documentation for a deeper understanding of Salesforce LWC development. Happy coding!