-
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
Einstein Analytics: Data Sync Functionality Explained
Data Sync is a process that helps to ensure that the data in your Salesforce org is ready to be used in Einstein Analytics. This…
How to Use Salesforce Marketing Cloud and 15 Surprising Benefits
Salesforce Marketing Cloud provides a variety of tools for creating personalized journeys that are relevant to your audience. This article will explore some of the advantages…
Need to Hire Salesforce Developers-in-House? 5 reasons Why it is a Bad Idea!
Glancing through Salesforce customer reviews, you may have noticed how often companies are surprised - and even shocked - about what comes after Salesforce implementation.…
Popular Salesforce Videos
Security Best Practices for Building Lightning Components
Lightning Component is a framework to build Salesforce applications faster. If you are using Salesforce1, you already experiencing the Lightning. It is based on an…
Salesforce Lightning Tutorial | Build a Custom Lightning Home Page
This Salesforce Lightning Tutorial video by Edureka will help you understand what exactly is Salesforce lightning. It will also talk about some of the features…
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,…