-
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
Top 4 Considerations in Choosing your Salesforce CPQ Partner
Congratulations, you’ve made the decision to implement Salesforce CPQ! Now comes the challenging task of choosing the right Salesforce CPQ partner to help fulfill your…
Approval Process on Opportunity Product in Salesforce
An Approval Process is an automated process an organization can use to approve records in Salesforce. It specifies the steps which are necessary for a…
Salesforce Service Cloud Handbook: Field Service Lightning, Omni-Channel Support, Einstein Bots, and more
In the previous article about Service Cloud, we covered its basic and most common functionality. Now, in our Salesforce Service Cloud Handbook, let's take a…
Popular Salesforce Videos
What is Classic Email Templates and Documents? Salesforce Tutorial
Classic Email Templates are also called Communication Templates. Watch this video and learn all about it, if you have any doubts or concerns, do reach…
Flow to Redirect User to Newly Created Record - Salesforce Flow
Scenario: Shubham is looking for functionality in Salesforce Flow Where after creating a record it redirects to that particular record detail page. Solution A: Create…
How Can Salesforce Help To Transform Business Into A Sales Powerhouse?
This video will help you understand what is Salesforce and how it can help transform businesses. Salesforce CRM will help to transform your organization to…