-
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
All You Need to Know About Salesforce Net Zero Marketplace
You may have heard of the Salesforce Net Zero Marketplace and be wondering how it fits into the Salesforce world and Net Zero Cloud. Here…
Enhancing Business Efficiency: Professional Salesforce Integration Services
Salesforce integration services aim to enable seamless connections between Salesforce solutions and your other business-critical systems. In today's fast-paced digital landscape, businesses strive to optimize their operations, maximize productivity,…
What is Salesforce AppExchange Development, and How Does it Help Your Business?
Salesforce has a plethora of features that help businesses across the globe to be more efficient and boost their success. However, you might encounter some…
Popular Salesforce Videos
Apex Trigger Framework Salesforce
From Salesforce instructor, Become a Salesforce Expert. See This video, and learn all about Apex Trigger Framework. `Resource: SFDC Panther
Salesforce Data Archive along with Files
This video tries to explain the way true archive of records as well as the files in Salesforce. Archive files along with the DataArchiva, We…
Develop Lightning Web Components Faster with Local Development Server | Developer Quick Takes
The Local Development Server is a Salesforce CLI plug-in that configures and runs a Lightning Web Components-enabled server on your computer. You can develop Lightning…