-
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
Get Salesforce record data into your Google Sheet through G-Connector - Part 2
Hello All, In my last blog, I shared with you all the required steps to install and configure G-connector for Salesforce. Now I am going to…
Types of Relationships in Salesforce - All You Need to Know
What is a Relationship? Connecting different objects with each other (to connect their records, afterwards), to replicate a real-life scenario/business process is called a relationship in…
Custom Objects and Standard Objects in Salesforce - The Understanding
As evidenced by its predominance across nearly every industry able to leverage CRM or automation tools, the greatest value proposition Salesforce has to offer is…
Popular Salesforce Videos
Famous Brands With Their Applications Listed On Salesforce AppExchange
Selling your app on AppExchange can dramatically increase your business revenue. Various renowned brands have already harnessed the potential of this marketplace to broaden their…
Salesforce Placement Success Story By One of our Student
Want to learn about Salesforce and planning to make a career in the Salesforce Industry? Join this useful group for Salesforce job & career info.
Introduction to Salesforce and Data Modeling | Quick Start | Episode 1
In this video, you will get started with Salesforce Development and build Salesforce Applications without writing code. Watch this video and learn. 00:00:00 - Start…