You need to sign in to do that
Don't have an account?
update mutiple record on click of button in lightning
Hi All,
My requirementt is to update the multiple records at the same time on the click of a button with the value which is input by the user from front end in lightning component.
Please let me know if any one face the scenario and provide the solution/ implemented code for the same.
Regards,
Abhinav Sharma
My requirementt is to update the multiple records at the same time on the click of a button with the value which is input by the user from front end in lightning component.
Please let me know if any one face the scenario and provide the solution/ implemented code for the same.
Regards,
Abhinav Sharma
Can you please provide me the code snippet for the same which you implemented as i got stuck while passing the list from JS controller to Apex Controller.
Regards,
Abhinav
Unfornunately i dont have that with me. You just need to make sure data type of the list you defined in Apex Controller matches with the one you defined in your view. If you paste snippet of your code, i might be able to help you.
Thanks.
Please find below small app where user can select any account from drop down then in child component associated contacts will get display.
Now the requiremnt is i have to update the email id's of multiple contacts at the same time on click oof save button.
AccountParentComponent.cmp
<aura:component controller="AccountContactClass">
<aura:handler name="init" action="{!c.doInit}" value="{!this}"/>
<table class="slds-table slds-max-medium-table--stacked">
<th>
<tr>
<td class="slds-cell-wrap slds-text-body--large">
<b>Account : </b>
</td>
<td class="slds-cell-wrap">
<ui:inputSelect change="{!c.onAccountChange}" aura:id="selectedAccount" >
<aura:iteration items="{!v.lstAccounts}" var="account">
<ui:inputSelectOption label="{!account.Name}" text="{!account.Id}" />
</aura:iteration>
</ui:inputSelect>
</td>
</tr>
</th>
</table>
<div>
<c:ChildContactComponent/>
</div>
</aura:component>
------------------------------------------------------------------------------
AccountParentComponentController.js
({
doInit : function(component, event, helper) {
var selectedAccount = component.find('selectedAccount').get("v.value");
component.set("v.SelAcc",selectedAccount);
//Used to get Accounts to show in Drop down
var action = component.get("c.getLstAccounts");
action.setCallback(this,function(a){
component.set("v.lstAccounts",a.getReturnValue());
});
$A.enqueueAction(action);
},
onAccountChange : function(component, event, helper){
var selectedAccount = component.find('selectedAccount').get("v.value");
component.set("v.SelAcc",selectedAccount);
var myEvent = $A.get("e.c:accountContactEvent");
myEvent.setParams({"selectedAccount" : selectedAccount}).fire();
},
})
--------------------------------------------------------------------------------
ChildContactComponent.cmp
<aura:component controller="AccountContactClass">
<link rel="stylesheet" href="/resource/SLDS0101/assets/styles/salesforce-lightning-design-system-vf.css" />
<link rel="stylesheet" href="/resource/SLDS0101/assets/styles/style.css" />
<link rel="stylesheet" href="/resource/basicstyle/css/Style2/styles.css" />
<aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<aura:handler event="c:accountContactEvent" action="{!c.updateEvent}"/>
<table class="slds-table slds-table--bordered slds-max-medium-table--stacked-horizontal">
<tr class="slds-text-heading--label">
<th scope="col">
<span class="slds-truncate">Name</span>
</th>
<th scope="col">
<span class="slds-truncate">Phone</span>
</th>
<th scope="col">
<span class="slds-truncate">Email</span>
</th>
<th scope="col">
<span class="slds-truncate">Account Name</span>
</th>
</tr>
<tbody>
<aura:iteration items="{!v.object}" var="obj">
<tr class="slds-hint-parent">
<td data-label="Name">
<span class="slds-truncate">
<a href="{!'/' + obj.lineId}">
<b><ui:outputText value="{!obj.Name}"/></b>
</a>
</span>
</td>
<td data-label="Phone" >
<span class="slds-truncate">
<ui:outputText value="{!obj.Phone}" />
</span>
</td>
<td data-label="Email" >
<span class="slds-truncate">
<ui:inputText value="{!obj.Email}" />
</span>
</td>
<td data-label="Email" >
<span class="slds-truncate">
<a href="{!'/' + obj.AccountIDs}">
<b><ui:outputText value="{!obj.AccountName}" aura:Id="AccountName"/></b>
</a>
</span>
</td>
</tr>
<tr class="stop"> </tr>
</aura:iteration>
</tbody>
</table>
<div>
<button class="slds-button slds-button--neutral" type="button" onclick="{!c.SaveButton}">
<span class="slds-truncate">Save</span>
</button>
</div>
</aura:component>
-----------------------------------------------------------------------------
ChildContactComponentController.js
({
doInit : function(component, event, helper) {
var selectedAccount = component.get("v.selectedAccount");
var action = component.get("c.getLstContact");
action.setParams({
"accountId" : selectedAccount
});
action.setCallback(this,function(a){
component.set("v.object",a.getReturnValue());
});
$A.enqueueAction(action);
},
updateEvent : function(component, event, helper) {
var selectedAccount = event.getParam("selectedAccount");
var action = component.get("c.getLstContact");
action.setParams({
"accountId" : selectedAccount
});
action.setCallback(this,function(a){
component.set("v.object",a.getReturnValue());
});
$A.enqueueAction(action);
},
SaveButton : function(component, event, helper) {
var selectedAccount = component.find("AccountName");
var action = component.get("c.getSaveContacts");
action.setParams({
"accountName" : selectedAccount[0].get("v.value")
});
action.setCallback(this,function(a){
component.set("v.object",a.getReturnValue());
});
$A.enqueueAction(action);
}
})
--------------------------------------------------------------------------------
AccountContactApp.app
<aura:application >
<c:AccountParentComponent />
</aura:application>
--------------------------------------------------------------------------------
AccountContactClass.cls
public class AccountContactClass {
@AuraEnabled
public static List<Account> getLstAccounts() {
return [select id,Name from Account];
}
@AuraEnabled
public static List<LineItem> getLstContact(String accountId) {
List<LineItem> origLineItems = new List<LineItem>();
List<Contact> fshList = [select id,Name,Phone,Email,Account.Name,AccountID from contact where AccountID=:accountId];
if(fshList !=null){
for(contact fsh: fshList){
lineItem li = new LineItem();
li.lineId = fsh.id;
li.Name = fsh.Name;
li.Phone = fsh.Phone;
li.Email = fsh.Email;
li.AccountName = fsh.Account.Name;
li.AccountIDs = fsh.AccountID;
origLineItems.add(li);
}
}
return origLineItems;
}
@AuraEnabled
public static List<LineItem> getSaveContacts(String accountName) {
List<LineItem> origLineItems = new List<LineItem>();
List<Contact> fshList = [select id,Name,Phone,Email,Account.Name,AccountID from contact where Account.Name=:accountName];
String AccID = fshList[0].AccountID;
if(fshList !=null){
for(contact fsh: fshList){
lineItem li = new LineItem();
li.lineId = fsh.id;
li.Name = fsh.Name;
li.Phone = fsh.Phone;
li.Email = fsh.Email;
li.AccountName = fsh.Account.Name;
li.AccountIDs = fsh.AccountID;
origLineItems.add(li);
}
}
for (LineItem CU : origLineItems) {
CU.Save();
}
return getLstContact(AccID);
}
public class LineItem{
@AuraEnabled
public String lineId {get;set;}
@AuraEnabled
public String Name {get;set;}
@AuraEnabled
public String Phone {get;set;}
@AuraEnabled
public String Email {get;set;}
@AuraEnabled
public String AccountName {get;set;}
@AuraEnabled
public String AccountIDs {get;set;}
public void Save() {
Contact c = [SELECT c.Email FROM Contact c WHERE c.ID = :lineId LIMIT 1];
c.Email = Email;
update c;
}
}
}
---------------------------------------------------------------------------------------------
Regards,
Failed to save undefined: No EVENT named markup://c:accountContactEvent found : [markup://c:ChildContactComponent]
Abhinav,
I have a very similar requirement. Have you got this working? if so please do share the code with me.
If you found any solution for this please post. We are also facing same issue.