You need to sign in to do that
Don't have an account?
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
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