+ Start a Discussion
Athira VenugopalAthira Venugopal 

lightning:datatable not getting refreshed after saving some data into it

    <lightning-button variant="brand"
    label="New Entry"
    title="Open Modal"
    <!-- modal start -->        
 <template if:true={bShowModal}>
    <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open">
       <div class="slds-modal__container">
          <!-- modal header start -->
          <header class="slds-modal__header">
             <button class="slds-button slds-button_icon slds-modal__close slds-button_icon-inverse" title="Close" onclick={closeModal}>
                <lightning-icon icon-name="utility:close"
                   size="small" ></lightning-icon>
                <span class="slds-assistive-text">Close</span>
             <h2 id="modal-heading-02" class="slds-text-heading_medium slds-hyphenate">Quotation</h2>
          <!-- modal body start -->
          <p class="slds-var-p-horizontal_small">
            <lightning-input label="Date" name="datefld" type="date" value={fDate} onchange={handledChange} ></lightning-input>
            <lightning-input label="Quotation Name" name="enquiry" type="textarea" value={enq} onchange={handledChange} ></lightning-input>
            <lightning-record-edit-form object-api-name="Price__c">
               <lightning-input-field field-name="Project__c" onchange={projectChange}>
        <lightning-record-edit-form object-api-name="Price__c">
        <lightning-input-field field-name="Unit__c"  onchange={unitChange} value ={unitVal}>
   <lightning-input label="Unit Rate" name="rate" type="Double" value={rNumber} onchange={handledChange}></lightning-input>
    <lightning-input label="Additional cost" name="cost" type="Double" value={cNumber} onchange={handledChange}></lightning-input>
    <lightning-input label="Discount" name="dis" type="Double" value={dNumber} onchange={handledChange}></lightning-input>
    <lightning-input label="Agreement cost" name="agree" type="Double" value={aNumber} onchange={handledChange}></lightning-input>
    <lightning-input label="Remarks" name = "remark" type="textarea" value={resultsum} onchange={handledChange}></lightning-input> 
     <lightning-button label="Save" variant="brand" onclick={handleClick}></lightning-button>
          <!-- modal footer start-->
 <!-- modal end -->
    <div if:true={accList}>
        <lightning-datatable data={accList} columns={columns} key-field="Id" >
    <div if:true={error}>


import { LightningElement , wire, track} from 'lwc';
import getAccountList from '@salesforce/apex/PriceFetch.getAccountList';
import calculate2Numbers from '@salesforce/apex/PriceFetch.calculate2Numbers';
import sentMail from '@salesforce/apex/PriceFetch.sentMail';
import getUnit from '@salesforce/apex/PriceFetch.getUnit';
import priceMail from '@salesforce/apex/PriceFetch.priceMail';
import newPrice from '@salesforce/apex/PriceFetch.newPrice';
import { refreshApex } from '@salesforce/apex';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
export default class PriceScreen extends LightningElement {
    @track aNumber;
    @track unitVal;
    @track disName;
    @track finalCost;
    @track bShowModal = false;
       @track Name;
    @track columns = [
            label: "Name",  
            fieldName: "recordLink",
            type: "url",  
            typeAttributes: { label: { fieldName: "Name" },  target: "_self" }  
    @track error;
    @track accList ;
    }) {
        if (data) {
            var tempOppList = [];  
            for (var i = 0; i < data.length; i++) {  
             let tempRecord = Object.assign({}, data[i]); //cloning object  
             tempRecord.Name = tempRecord.Name;
             tempRecord.recordLink = "/" + tempRecord.Id;  
            console.log('hHIIII' + data)
            this.accList = tempOppList;
            this.wiredDataResult = tempOppList;
        } else if (error) {
            this.error = error;
            this.datefld = event.target.value;
        else if(event.target.name==='enquiry'){
         this.enquiry = event.target.value;    
        else if(event.target.name==='rate'){
        this.rate = event.target.value;    
       else if(event.target.name==='cost'){
          this.cost = event.target.value;    
       else if(event.target.name==='dis'){
        this.dis = event.target.value;    
        calculate2Numbers({ unitRate: this.rate,addtnlCost:this.cost,     discount:this.dis })
        .then(result => {
         this.aNumber = result;
           // this.error = undefined;
        .catch(error => {
            this.aNumber = undefined;
            //this.error = error;
    else if(event.target.name==='agree'){
        console.log('handle Change'+event.target.value)
        this.agree = event.target.value;    
    else if(event.target.name==='remark'){
        console.log('handle Change'+event.target.value)
        this.remark = event.target.value;    
    projectChange(event) {
        alert("PROJECT" + event.detail.value[0]);
       this.projSelected = event.detail.value[0];
       getUnit({ projId:this.projSelected })
       .then(result => {
        this.unitVal = result;
       .catch(error => {
        this.unitVal = undefined;
    unitChange(event) {
        this.unitSelected = event.detail.value[0];
   handleClick(event) {
    this.bShowModal = false;
    newPrice({ entryDate: this.datefld, enqName : this.enquiry, proj:this.projSelected, unit:this.unitSelected,
        unitRate:this.rate, addtnlCost:this.cost, discount:this.dis, agreeCost:this.agree,rem:this.remark })
   .then(result => {
    const evt = new ShowToastEvent({
        title: 'Saved succesfully',
        variant: 'success',
    console.log("Opps updated!" + result)
   .catch(error => {
        this.error = error;
        alert("FAILURE" + error);
         //this.error = error;
 /* javaScipt functions start */ 
    openModal() {    
        // to open modal window set 'bShowModal' tarck value as true
        this.bShowModal = true;
    closeModal() {    
        // to open modal window set 'bShowModal' tarck value as true
        this.bShowModal = false;


public with sharing class PriceFetch {
    public static List<Price__c> getAccountList() {
        return [SELECT Id,  Name
            FROM Price__c ];
    public static Double calculate2Numbers(Double unitRate,Double addtnlCost, Double discount){
        return ((unitRate+addtnlCost)-discount);
    @AuraEnabled(cacheable = true)
    public static List<Unit__c> getUnit(Id projId) {
        return [SELECT Id,  Name FROM Unit__c where Project__c = :projId ];
    public static Boolean newPrice(Date entryDate, String enqName, Id proj, Id unit,Double unitRate,Double addtnlCost, Double discount,Double agreeCost, String rem ){
       Price__c price = new Price__c();
       price.Date__c = entryDate;
       price.Name = enqName;
       price.Project__c = proj;
       price.Unit__c = unit;
       price.Unit_Rate__c = unitRate;
       price.Additional_cost__c = addtnlCost;
       price.Discount__c = discount;
       price.Agreement_cost__c = agreeCost;
       price.Remarks__c = rem;
       try {
        insert price;
        return true;
       } catch (Exception e) {
           throw new AuraHandledException('exceptionText' + e.getMessage());

In the js file, there is a method handleClick(), inside that method, I am trying to refresh the lightning:datatable after saving some data into it, but its not getting refreshed. Is there any mistake in my code?
David Zhu 🔥David Zhu 🔥
You are trying to refresh a property.  The property has to be annotated with @wire.
In your code wiredAccounts is the one with @wire annotated, not wiredDataResult.
You may use refreshApex(this.wiredAccounts); to replace the imperative refresh apex call.
Athira VenugopalAthira Venugopal
I have  tried this 'refreshApex(this.wiredAccounts);', lightning:datatable is not getting refreshed.