function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
VRKVRK 

Lightning dataTable field update isssue

Hi 
my requirment is :
i have cols  :picklist field( values:pick1,pick2,pick3) ,Date 1 & Date 2.
Form                                        Date1   
---------                                      ---------   
pick1       
pick2       
pick3  
my requirement is :
When date 1  update for pick1 .......... 
then, for pick2 date1 should display as  date1+30.
And        pick3 date1 should dispaly as date1+60.

Expected As:
Form                                        Date1   
---------                                      ---------   
pick1                                       1-june-2020
pick2                                       1-july -2020 ( expected)
pick3                                        1-Aug-2020( expected) .

my source code :
comp:
 <lightning:datatable
                                 aura:id="riderStatusDataTable"
                                 columns="{! v.columns }"
                                 data="{!v.data }"
                                 keyField="Id"
                                 onsave ="{!c.onSave}"
                                 hideCheckboxColumn="true"
                                 onrowaction="{! c.handleRowAction }" />

controller :

 component.set('v.columns', [
            {label: 'Form', fieldName: 'Form', type: 'string'},
            {label: 'Date', fieldName: 'Date_Sent', editable:"", type: 'date-local', sortable:true},
                   ]);

Any ideas how to acheive this :
Thanks
VRK

David Zhu 🔥David Zhu 🔥
You may add the following code snippet to onSave js controller method.
 
onSave : function(component, event, helper) {

var uptData = [];

var data = component.get("v.data");

foreach (var x in data)
{
    var d = data[x];
    d.col2 = d.Date_Sent + 30;   //you need to make sure field col2 and col3 are already in the list whn populatig attribute data.
    d.col3 = d.Date_Sent + 60;
    updData.push(d);
}

component.set("v.data",uptData);

}

 
VRKVRK
Hi David, 
i tried, below code, But when i click on Save button  , its not save the results . pls check is there anything wrong in my code.
I added my new code for an existing code.
I am expecting result is :
    when i enter 'Release',   date is 1-June-2020 ,
    then 60day release Letter date auto-populate as 1-Auly-2020
    And  120day release Letter date auto-populate as 1-Oct-2020.

    
    My code :
     saveDataTable :function(component, event) {
      var editedRecords =  component.find("riderStatusDataTable").get("v.draftValues");
        var myJSON = JSON.stringify(editedRecords);
        var i;
        for (i = 0; i < editedRecords.length; i++) { 
            var TemporaryArray;
            TemporaryArray = {'sobjectType':'Reader_Status__c'};
            TemporaryArray.Id=editedRecords[i].Id;
            TemporaryArray.Date_Sent__c=editedRecords[i].Date_Sent;
            TemporaryArray.Send_To__c=editedRecords[i].SendTo;
            TemporaryArray.Date_Reviewed__c=editedRecords[i].Date_Reviewed;
            var totalRecordEdited = editedRecords.length;
            
           /////////New code added///////////////
           var data = component.get("v.data");
           var uptData = [];
            for (var x in data)
            {
              var d = data[x];
              if(d.Form == "Release"){
                  TemporaryArray.Date_Sent__c = d.Date_Sent;
                  TemporaryArray.Date_Reviewed__c = d.Date_Reviewed;
                  break;
              }
            }
            for (var x in data)
            {
              var d = data[x];
                if(d.Form == "60 Day release Letter" ){
                    var dt = new Date(TemporaryArray.Date_Sent__c);
                    dt.setDate(dt.getDate() + 60);
                    d.Date_Sent = dt;
                    dt = new Date(TemporaryArray.Date_Reviewed__c);
                    dt.setDate(dt.getDate() + 60);
                    d.Date_Reviewed  =  dt;
                    uptData.push(d);
                }
                if(d.Form == "120 Day release Letter" ){
                    var dt = new Date(TemporaryArray.Date_Sent__c);
                    dt.setDate(dt.getDate() + 120);
                    d.Date_Sent = dt;
                    dt = new Date(TemporaryArray.Date_Reviewed__c);
                    dt.setDate(dt.getDate() + 120);
                    d.Date_Reviewed  =  dt;
                    uptData.push(d);
                }
                 // component.set("v.data",uptData);
            }
           / ///End new code//////////////
            var action = component.get("c.updateReaderStatus");
            action.setParams({
                  'data' :uptData,            ( ////////new line added)
                'editedReaderStatusList' : TemporaryArray
               
            });
            
         
            action.setCallback(this,function(response) {
                var state = response.getState();
                if (state === "SUCCESS") {
                    if(response.getReturnValue() === true){
                        var message = totalRecordEdited+" Contract maintaenance Records Updated";
                        component.set("v.notifysection",true);
                        component.set("v.notificationmessage",message);
                     /////
                        component.set("v.data",uptData);                    (//////new line added)
                    // ///
                        // to redirect to the Quote request page
                        var navEvt = $A.get("e.force:navigateToSObject");
                        navEvt.setParams({ 
                            "recordId": component.get("v.parentRecordId"),
                            "slideDevName": "detail"
                        });
                        setTimeout(function(){
                            navEvt.fire();
                        },1000);
                        
                    } else{ //if update got failed
                        component.set("v.notifysection",true);
                        component.set("v.notificationmessage","Error in update");
                         
                    }
            }
               
        });
            $A.enqueueAction(action);
            
        }
         ////////
    },
})

apex class:
@AuraEnabled
    public static boolean updateReaderStatus(Reader_Status__c editedReaderStatusList,List<Sobject> data){
        try{
            update data;            (////new line added)
            update editedReaderStatusList;
            return true;
        } catch(Exception e){
            return false;
        }
    }
Any help appreciated..
Thanks
VRK