You need to sign in to do that
Don't have an account?
Chaminga Dissanayake
Iterating Complex Map in Lightning
I'm working a lightning component, which has a requirement of displaying a dynamic table.
For that, I need to iterate over a map (Map>) and display the values.
So, How can I retrieve map from apex controller and display values/key on the component ?
Apex Controller method signature –
Component –
For that, I need to iterate over a map (Map>) and display the values.
So, How can I retrieve map from apex controller and display values/key on the component ?
Apex Controller method signature –
public static Map<Id, Map<String, String>> getDataCollectionTableValues(Id dataCollectionId){Apex method return value –
{ a0E0k000003aEKUEA2= { Field_10__c=test1, Field_1__c=test2, Field_2__c=test3, Field_3__c=test6, Field_4__c=null, Field_5__c=null, Field_6__c=test7, Field_7__c=null, Field_8__c=null, Field_9__c=test, ... } }Lightning helper – I’ve passed id parameter to controller method and set response to the map attribute.
({ loadDataCollection: function(component) { var action = component.get("c.getDataCollectionTableValues"); action.setParams({ dataCollectionId : component.get("v.recordId") }); action.setCallback(this, function(response) { var state = response.getState(); if (state === "SUCCESS") { component.set("v.dataCollectionRecords", response.getReturnValue()); console.debug(response.getReturnValue()); }else { console.debug(response.error[0].message); } }); $A.enqueueAction(action); } })
Component –
<aura:component implements="flexipage:availableForAllPageTypes,force:hasRecordId" access="global" controller="DataCollectionTableController"> <aura:attribute name="recordId" type="Id"/> <aura:attribute name="dataCollection" type="Data_Collection__c" /> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <aura:attribute name="dataCollectionRecords" type="Map"/> <aura:iteration items="{!v.dataCollectionRecords}" var="dcrRecord" indexVar="key"> {!key} {!dcrRecord.key} </aura:iteration> </aura:component>
Use the code like this
i WOULD ADVISE TO THE WRAPPER LIST AND DISPLAY THE LIST IN LIGHTNING
Failed to save DataCollectionTable.cmp: expecting a positive integer, found 'key' at column 23 of expression: dataCollectionRecords[key]: Source
The table is dynamic, including columns. Therefore i have to use a map.
First by putting value in map using controller and displaying it in lightning component simply by using {!v.map.key} and second by iterating over map using aura iteration.
This will help on this,
https://www.sfdc-lightning.com/2018/09/how-to-use-map-in-lightning-component.html