Skip to main content
How do I Display the Name and Description of a Lightning Component? wherein the record type 1 is the name while below of it should be the description

How to get the Name and Description of the Record Type in a Lightning Component

Apex Class

 

public class AccountRecordTypes {

@AuraEnabled

public static Map<String,String> GetAvailableRecordTypeAccount()

{

Map<String,String> recordTypeMap = new Map<String,String>();

Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();

List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();

for(RecordType rec : [SELECT Id, Name, DeveloperName, Description FROM RecordType WHERE SobjectType = 'Account']) {

recordTypeMap.put(rec.Id, rec.Description);

system.debug('recordtype' + recordtypemap);

}

}

return recordTypeMap;

}

}

Helper

({

getRecordTypes : function(component,event,helper){

var action = component.get("c.GetAvailableRecordTypeAccount");

action.setCallback(this,function(response){

var state = response.getState();

if(state === "SUCCESS"){

var returning = [];

var recordTypes = response.getReturnValue();

for(var key in recordTypes){

//alert("Record Type Id: "+key+" Name: "+recordTypes[key]);

returning.push({value:recordTypes[key],key:key});

}

component.set("v.availableRecordTypes",returning);

component.set("v.retrievedTypes",true);

}

else{

alert("Temporary Error: There is a problem getting the Record Types.");// Temporary, Will be changed to ToastError.

}

});

$A.enqueueAction(action);

}

​Component

 

<aura:component controller="LightningAccount" implements="lightning:actionOverride,force:lightningQuickAction" access="global">

<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>

<aura:attribute name="availableRecordTypes" type="List" />

<aura:attribute name="recordTypeId" type="String" default=""/>

<aura:attribute name="loading" type="Boolean"/>

<aura:attribute name="retrievedTypes" type="Boolean"/>

<aura:renderIf isTrue="{!v.retrievedTypes}">

<fieldset class="slds-form-element">

<aura:if isTrue="{!v.loading}">

<lightning:spinner variant="brand" size="large" />

</aura:if>

<table>

<tr><td width="25%">

<legend class="slds-form-element__legend slds-form-element__label"><b>Select a Record Type</b></legend></td>

<div class="slds-form-element__control">

<aura:iteration items="{!v.availableRecordTypes}" var="type" indexVar="key">

<span class="slds-radio">

<input id="{!'radio-'+type.value}" value="{!type.value}" name="options" type="radio" onchange="{!c.optionSelected}"/>

<label class="slds-radio__label" for="{!'radio-'+type.value}">

<span class="slds-radio_faux"></span>

<span class="slds-form-element__label"><b>{!type.value}</b></span><br></br>

</label>

</span>

<br></br>

</aura:iteration>

</div>

</tr>

</table>

</fieldset>

</aura:renderIf>

Controller

({

doInit : function(component,event,helper){

helper.getRecordTypes(component,event,helper);

},

optionSelected : function(component,event,helper){

component.set("v.loading",true);

var recordName = event.target.getAttribute("value");

var recordTypes = component.get("v.availableRecordTypes");

for(var i=0;i<recordTypes.length;i++){

if(recordName==recordTypes[i].value){

component.set("v.recordTypeId",recordTypes[i].key);

break;

}

}

}

})

 
3 answers
  1. Sep 4, 2018, 7:13 AM
    Hi,

    I trust you are doing very well.

    Please try the below code, I have made a few changes. I have checked in my org and it is displaying both record type name and description.

    Component:

    <aura:component controller="RecordTypeC"

    implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >

    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>

    <aura:attribute name="availableRecordTypes" type="List" />

    <aura:attribute name="recordTypeId" type="String" default=""/>

    <aura:attribute name="loading" type="Boolean"/>

    <aura:attribute name="retrievedTypes" type="Boolean"/>

    <aura:renderIf isTrue="{!v.retrievedTypes}">

    <fieldset class="slds-form-element">

    <aura:if isTrue="{!v.loading}">

    <lightning:spinner variant="brand" size="large" />

    </aura:if>

    <table>

    <tr><td width="25%">

    <legend class="slds-form-element__legend slds-form-element__label"><b>Select a Record Type</b></legend></td>

    <div class="slds-form-element__control">

    <aura:iteration items="{!v.availableRecordTypes}" var="type" indexVar="key">

    <span class="slds-radio">

    <input id="{!'radio-'+type.value}" value="{!type.value}" name="options" type="radio" onchange="{!c.optionSelected}"/>

    <label class="slds-radio__label" for="{!'radio-'+type.value}">

    <span class="slds-radio_faux"></span>

    <span class="slds-form-element__label"><b>{!type.name}</b></span><br></br>

    <div class="slds-p-left_xx-large">

    <span class="slds-form-element__label"><b>{!type.value}</b></span><br></br>

    </div>

    </label>

    </span>

    <br></br>

    </aura:iteration>

    </div>

    </tr>

    </table>

    </fieldset>

    </aura:renderIf>

    </aura:component>

    Controller:

    ({

    doInit : function(component,event,helper){

    helper.getRecordTypes(component,event,helper);

    },

    optionSelected : function(component,event,helper){

    component.set("v.loading",true);

    var recordName = event.target.getAttribute("value");

    var recordTypes = component.get("v.availableRecordTypes");

    for(var i=0;i<recordTypes.length;i++){

    if(recordName==recordTypes[i].value){

    component.set("v.recordTypeId",recordTypes[i].key);

    break;

    }

    }

    }

    })

    Helper:

    ({

    getRecordTypes : function(component,event,helper){

    var action = component.get("c.GetAvailableRecordTypeAccount");

    action.setCallback(this,function(response){

    var state = response.getState();

    if(state === "SUCCESS"){

    var returning = [];

    var recordTypes = response.getReturnValue();

    console.log('recordTypes -> ' + JSON.stringify(recordTypes));

    for(var key in recordTypes){

    //alert("Record Type Name: " + recordTypes[key]);

    returning.push({value:recordTypes[key],

    name:key});

    }

    console.log('returning -> ' + JSON.stringify(returning));

    component.set("v.availableRecordTypes",returning);

    component.set("v.retrievedTypes",true);

    }

    else{

    alert("Temporary Error: There is a problem getting the Record Types.");// Temporary, Will be changed to ToastError.

    }

    });

    $A.enqueueAction(action);

    }

    })

    Apex:

    public class RecordTypeC {

    @AuraEnabled

    public static Map<String,String> GetAvailableRecordTypeAccount()

    {

    Map<String,String> recordTypeMap = new Map<String,String>();

    Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();

    List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();

    for(RecordType rec : [SELECT Id, Name, DeveloperName, Description FROM RecordType WHERE SobjectType = 'Account']) {

    recordTypeMap.put(rec.Name, rec.Description);

    system.debug('recordtype' + recordtypemap);

    }

    return recordTypeMap;

    }

    }

    I hope it helps you.

    Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in future.

    Thanks and Regards,

    Khan Anas
0/9000