-
How to use Lightning Component to update records on server
How can I get values selected on a drop down by a user to save to the records? I believe my issue is in my JS controller "changeDcn"..
Component:
<!--massUpdateItemDecision--> <aura:component access="global" controller="MassUpdateController" implements="flexipage:availableForAllPageTypes,force:lightningQuickActionWithoutHeader,force:hasRecordId,force:hasSObjectName"> <aura:handler name="init" value="{!this}" action="{!c.doInit}"/> <aura:attribute name="recordId" type="Id"/> <aura:attribute name="relatedItems" type="MassUpdateController.wrapItemRecord[]"/> <aura:attribute name="selectedItems" type="MassUpdateController.wrapItemRecord[]"/> <aura:attribute name="itemDecisionList" type="String[]"/> <aura:attribute name="selectAll" type="boolean" default="false"/> <aura:attribute name="selectedDecision" type="String"/> <aura:attribute name="RIM__c" type="Object"/> <aura:attribute name="RIM_Item__c" type="Object"/> <force:recordData aura:id="rRecord" recordId="{!v.recordId}" targetFields="{!v.RIM__c}" layoutType="FULL" mode="EDIT"/> <lightning:card iconName="custom:custom41" title="{! 'Item List for ' + v.RIM__c.Customer_Name__c}"> <div class="slds-form slds-p-horizontal_medium" role="list"> <div class="slds-form__row"><div class="slds-form__item" role="listitem"> <div class="slds-form-element slds-form-element_horizontal slds-is-editing"> <lightning:select name="selectItem" label="Apply Decision to Selected:" value="{!v.selectedDecision}" onchange="{!c.setDcn}"> <option text="None" value="{!v.value}"></option> <aura:iteration items="{!v.itemDecisionList}" var="stat"> <option text="{!stat}" value="{!stat}"></option> </aura:iteration> </lightning:select> </div></div></div></div> <!-- BEGIN TABLE JUNK --> <table class="slds-table"> <thead> <tr class="slds-text-title_caps slds-line-height_reset"> <th class="" style="width:10px"> <ui:inputCheckbox aura:id="box3" value="{!v.selectAll}" change="{!c.onCheck}"/></th> <th class="slds-p-around_xxx-small" scope="col"><div class="" title="Type">Type</div></th> <th class="slds-p-around_xxx-small" scope="col"><div class="" title="Transaction Amount">Amount</div></th> <th class="slds-p-around_xxx-small" scope="col"><div class="" title="Decision">Decision</div></th> </tr> </thead> <tbody> <aura:iteration items="{!v.relatedItems}" var="itm"> <tr> <td><div class="" style="width:10px"> <ui:inputCheckbox aura:id="boxPack" value="{!itm.itemSelected}"/></div> </td> <td data-label="Type"> <div class="slds-form-element__control" title="Type"> <p class="slds-text-body_regular">{!itm.wrapItem.Transaction_Type__c}</p> </div></td> <td data-label="Transaction Amount"> <div class="slds-form-element__control" title="Transaction Amount"> <p><lightning:formattedNumber value="{!itm.wrapItem.Transaction_Amount_Detail__c}" style="currency" currencyCode="USD"/></p> </div></td> <td data-label="Decision"> <ui:inputSelect class="slds-select spear-select" aura:id="selectItem" value="{!itm.wrapItem.Decision__c}" updateOn="change" > <aura:iteration items="{!v.itemDecisionList}" var="stat"> <ui:inputSelectOption text="{!stat}" label="{!stat}" value="{!stat==itm.wrapItem.Decision__c}" /> </aura:iteration> </ui:inputSelect> <!-- aura:if isTrue="{!itm.wrapItem.Status__c == ''}"><img src="https://spectatorblogs.imgix.net/files/2016/03/ex.jpg"/> </aura:if--> </td> </tr></aura:iteration></tbody><br/> </table> <!--BEGIN BUTTONS--> <div align="center"> <lightning:button variant="neutral" label="Nvm" onclick="{!c.cancel}" /> <lightning:button variant="brand" label="GObop!" onclick="{!c.changeDcn}" /> </div> </lightning:card> </aura:component>Controller.js
({ doInit : function(component, event, helper) { var action = component.get("c.getAllRelatedItems"); action.setParams({ "visitRecordId" : component.get("v.recordId")}); action.setCallback(this, function(a) { component.set("v.relatedItems", a.getReturnValue());}); $A.enqueueAction(action); helper.getPrepopulatedValues(component, event, helper);}, onCheck : function(component, event, helper) { var selAll = component.get("v.selectAll"); var newlst =[]; var allItems = component.get("v.relatedItems"); for(var i in allItems){ var space = allItems[i]; space.itemSelected = selAll; newlst.push(space);} component.set("v.selectedItems",newlst); component.set("v.relatedItems",newlst);}, setDcn : function(component, event, helper) { var selcDcn = component.get("v.selectedDecision"); var newlst =[]; var allItems = component.get("v.relatedItems"); for(var i in allItems){ var space = allItems[i]; if(space.itemSelected === true){ space.wrapItem.Decision__c = selcDcn;} newlst.push(space);} component.set("v.relatedItems",newlst);}, //please help! ====================================================== changeDcn : function(component, event, helper) { var allItems = component.get("v.relatedItems"); for(var i in allItems){ var space = allItems[i]; //alert("Decision: " + space.wrapItem.Decision__c); } var action = component.get("c.saveDcn"); action.setParams({"dcns": allItems}); action.setCallback(this, function(response){ var state = response.getState(); if (state === "SUCCESS") { var listy = component.get("v.itemDecisionList"); listy.push(response.getReturnValue()); component.set("v.itemDecisionList", listy); } }); $A.enqueueAction(action); }, //=================================================================== cancel : function (component, event, helper) { var action = component.get("c.getAllRelatedItems"); action.setParams({ "visitRecordId" : component.get("v.recordId")}); action.setCallback(this, function(a) { component.set("v.relatedItems", a.getReturnValue());}); $A.enqueueAction(action); helper.getPrepopulatedValues(component, event, helper); }, })Helper.js
({ getPrepopulatedValues : function(component, event, helper) { var action = component.get("c.getDcnValues"); action.setCallback(this, function(a) { component.set("v.itemDecisionList", a.getReturnValue()); }); $A.enqueueAction(action); }, })Controller.apxc
public class MassUpdateController { @auraEnabled public static List<wrapItemRecord> getAllRelatedItems(Id visitRecordId){ List<wrapItemRecord> wrapItemRecordList = new List<wrapItemRecord>(); for(RIM_Item__c itm : [select Id, Name, RIM__r.Name, Decision__c, Transaction_Amount_Detail__c, Transaction_Type__c, RIM__r.Customer_Name__c from RIM_Item__c where RIM__c = :visitRecordId]){ wrapItemRecordList.add(new wrapItemRecord(itm)); } return wrapItemRecordList; } @auraEnabled public static List<String> getDcnValues(){ List<String> options = new List<String>(); Schema.DescribeFieldResult fieldResult = RIM_Item__c.Decision__c.getDescribe(); List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues(); for (Schema.PicklistEntry f: ple) { options.add(f.getLabel()); } return options; } //================================================================== @auraEnabled public static RIM_Item__c saveDcn(RIM_Item__c dcns){ UPDATE dcns; RETURN dcns; } //================================================================== public class wrapItemRecord{ @auraEnabled public boolean itemSelected{get; set;} @auraEnabled public RIM_Item__c wrapItem{get; set;} @auraEnabled public boolean isDecided{get; set;} public wrapItemRecord(RIM_Item__c itm){ itemSelected = false; wrapItem = itm; if(itm.Decision__c == null){ isDecided = false; }else{ isDecided = true; } } } }
Log In to reply.
Popular Salesforce Blogs
5 Expert Tips To Make Testing In Salesforce Easier
Testing in Salesforce is not easy. Since many of the classes are standard Salesforce classes that you don’t have any control over, and can’t customize,…
How Salesforce CRM Can Improve Business Performance?
During the early days of the dot com bubble, top corporate powerhouses spent millions of dollars to keep track of Management Information and Customer Relationship…
How to Clone a Record In Apex?
What is Clone Record in Apex? The clone() method in Salesforce Apex makes a duplicate of the sObject record. There are four Boolean-type optional parameters…
Popular Salesforce Videos
The 3 Most Common Challenges Associated With B2b Commerce Cloud Implementations
With growing technology businesses are adapting to the new changes. B2B commerce cloud is one of them. But to implement the B2B commerce cloud is…
How to Delete Multiple Contacts at Once | Salesforce Tutorial
Do you need to delete a bunch of records? Don't want to delete records one by one? This video shows you several ways to delete…
Benefits of Implementing Salesforce Revenue Cloud
Healthy revenue growth is a vital indicator of a firm’s success. The key aspects that majorly affect an organization’s revenue growth are sales, operations, finance,…