You need to sign in to do that
Don't have an account?
ApexDev
Refresh Apex in LWC not working
Hi Developers :) Can somebody look at my code, and describe me why the refresh Apex is not working after deleting record?
import { LightningElement, wire, track, api } from 'lwc'; import getWOLIs from '@salesforce/apex/WOLIController.getWOLIs'; import { refreshApex } from '@salesforce/apex'; import { updateRecord } from 'lightning/uiRecordApi'; import delSelectedWoli from '@salesforce/apex/WOLIController.deleteWolis'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import LineItemNumber_FIELD from '@salesforce/schema/WorkOrderLineItem.LineItemNumber'; import Work_to_do__c_FIELD from '@salesforce/schema/WorkOrderLineItem.Work_to_do__c'; import Status_FIELD from '@salesforce/schema/WorkOrderLineItem.Status'; import ListPrice_FIELD from '@salesforce/schema/WorkOrderLineItem.ListPrice'; import AssetId_FIELD from '@salesforce/schema/WorkOrderLineItem.AssetId'; import Discount_FIELD from '@salesforce/schema/WorkOrderLineItem.Discount'; import Duration_FIELD from '@salesforce/schema/WorkOrderLineItem.Duration'; import ID_FIELD from '@salesforce/schema/WorkOrderLineItem.Id'; const actions = [ { label: 'Delete', name: 'delete'} ]; const COLS = [ { label: 'Line Item Number', fieldName: LineItemNumber_FIELD.fieldApiName, editable: false }, { label: 'Work to do', fieldName: Work_to_do__c_FIELD.fieldApiName, editable: true }, { label: 'Device', fieldName: AssetId_FIELD.fieldApiName, editable: true }, { label: 'Status', fieldName: Status_FIELD.fieldApiName, editable: false }, { label: 'List Price', fieldName: ListPrice_FIELD.fieldApiName, type: 'double', editable: true }, { label: 'Discount', fieldName: Discount_FIELD.fieldApiName, type: 'percent', editable: true }, { label: 'Duration', fieldName: Duration_FIELD.fieldApiName, type: 'double', editable: true }, { type: 'action', typeAttributes: { rowActions: actions, menuAlignment: 'right' }} ]; export default class WoliNewLWC extends LightningElement { @api recordId; columns = COLS; draftValues = []; // non-reactive variables selectedRecords = []; refreshTable; error; // retrieving the data using wire service @wire(getWOLIs, { woId: '$recordId' }) wolis; handleRowActions(event) { let actionName = event.detail.action.name; window.console.log('actionName ====> ' + actionName); let row = event.detail.row; window.console.log('row ====> ' + row); // eslint-disable-next-line default-case switch (actionName) { case 'delete': this.deleteWolis(row); //break; } } async handleSave(event) { // Convert datatable draft values into record objects const records = event.detail.draftValues.slice().map((draftValue) => { const fields = Object.assign({}, draftValue); return { fields }; }); // Clear all datatable draft values this.draftValues = []; try { // Update all records in parallel thanks to the UI API const recordUpdatePromises = records.map((record) => updateRecord(record) ); await Promise.all(recordUpdatePromises); // Report success with a toast this.dispatchEvent( new ShowToastEvent({ title: 'Success', message: 'Work Order Line Item updated', variant: 'success' }) ); // Display fresh data in the datatable await refreshApex(this.wolis); } catch (error) { this.dispatchEvent( new ShowToastEvent({ title: 'Error updating or reloading work order line items', message: error.body.message, variant: 'error' }) ); } } deleteWolis(currentRow) { let currentRecord = []; currentRecord.push(currentRow.Id); this.showLoadingSpinner = true; // calling apex class method to delete the selected contact delSelectedWoli({lstWolIds: currentRecord}) .then(result => { window.console.log('result ====> ' + result); this.showLoadingSpinner = false; // showing success message this.dispatchEvent(new ShowToastEvent({ title: 'Success!', message: currentRow.LineItemNumber +' Work Order Line Item deleted.', variant: 'success' }),); // refreshing table data using refresh apex return refreshApex(this.refreshTable); }) .catch(error => { window.console.log('Error ====> '+error); this.dispatchEvent(new ShowToastEvent({ title: 'Error!!', message: error.message, variant: 'error' }),); }); } handleSuccess() { return refreshApex(this.refreshTable); } }