function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
shalini sharma 24shalini sharma 24 

In my aura component, I iterate through an array of record types to render as radio buttons and would like to set the very first one to be selected by default.

Best Answer chosen by shalini sharma 24
sfdcMonkey.comsfdcMonkey.com
here is your solution update your code with below code:
apex class :
@AuraEnabled
public static List<recordTypeWrapper.DisplayRecordTypes> getRecordTypes() {
        List<recordTypeWrapper.DisplayRecordTypes> lstRecordTypes =
        new List<recordTypeWrapper.DisplayRecordTypes>();
        List<Schema.RecordTypeInfo> recordtypes = Submission__c.SObjectType.getDescribe().getRecordTypeInfos();
        for(RecordTypeInfo rt : recordtypes){
            if(rt.getName() != 'Master')
                if(rt.isAvailable()==True){
               recordTypeWrapper.DisplayRecordTypes recordType =
                new recordTypeWrapper.DisplayRecordTypes();
                recordType.recordTypeId =rt.getRecordTypeId();
                recordType.recordTypeLabel = rt.getName();
                recordType.isDefault =rt.isDefaultRecordTypeMapping();
                lstRecordTypes.add(recordType);
            }
       }
        system.debug('lstRecordTypes' +lstRecordTypes);
        return lstRecordTypes;

}


wrapper class :
public class recordTypeWrapper {
 /*******************************************/
    /* Wrapper class to display Record Types      */
    /*****************************************/
    
    public class DisplayRecordTypes {
        
        @AuraEnabled public boolean isDefault; 
        @AuraEnabled public string recordTypeLabel;
        @AuraEnabled public string recordTypeId;
        
        public DisplayRecordTypes(){
            isDefault = false;
            recordTypeLabel = '';
            recordTypeId = '';
        }
    }
}
aura component :
<aura:attribute name="isOpen" type="boolean" default="false" />
    <aura:attribute name="selectedRecord" type="String"/>            
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    <aura:attribute name="lstRecordTypes" type="recordTypeWrapper.DisplayRecordTypes[]" /> 
    <aura:attribute name="label" type="String" />
    
    <aura:iteration items="{!v.lstRecordTypes}" var="recdTypes">   
        <div class="slds-grid slds-wrap">
            <div>
                <ui:inputRadio text="{!recdTypes.recordTypeId}" class="slds-m-top_medium" label="{!recdTypes.recordTypeLabel}" value="{!recdTypes.isDefault}" aura:id="recdTypeId" name="R1"  change="{!c.onRadio}"/>
            </div>
        </div> 
    </aura:iteration>
    
    <div class="slds-modal__footer">
       <lightning:button class="slds-button slds-button--neutral" onclick="{!c.closeModal}">Cancel</lightning:button>
       <lightning:button class="slds-button slds-button--brand" onclick="{!c.RedirectToOpp}">Continue</lightning:button>
    </div>
js :
({
    doInit: function(component, event, helper) {    
        component.set("v.isOpen", true);
        var action = component.get("c.getRecordTypes");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                console.log(response.getReturnValue());
                component.set("v.lstRecordTypes",response.getReturnValue());
                var res = response.getReturnValue();  
                
                // set default record type value to attribute    
                for(var i = 0; i < res.length; i++){
                    if(res[i].isDefault){
                        component.set("v.selectedRecord", res[i].recordTypeId);
                    }
                }
                
            } 
            else if (state == "ERROR") {
                var toastEvent = $A.get("e.force:showToast");
                toastEvent.setParams({
                    "title": "Error!",
                    "message": "Please contact your administrator"
                });
                toastEvent.fire();
            }    
        });
        $A.enqueueAction(action);
    },
    
    onRadio : function(component,event,helper){
        var recId = event.getSource().get("v.text");
        component.set("v.selectedRecord" , recId);
    } ,
    
    RedirectToOpp : function(component,event,helper){
        alert(component.get("v.selectedRecord"));
    } ,
    
    
})
Thanks, let us know if it helps you , or if you have any issue with it

All Answers

shalini sharma 24shalini sharma 24
User-added imageHi , if you see the attached screenshot , i am able to fetch the recordtypes with defalt record type already checked. But i am not sure why am i getting this [object Object] next to the record Types labels.

Also , i am not able to go ahead and create the records for default selected record type. 
COMPONENT
 <aura:attribute name="isOpen" type="boolean" default="false" />
    <aura:attribute name="selectedRecord" type="String"/>            
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
     <aura:attribute name="lstRecordTypes" type="recordTypeWrapper.DisplayRecordTypes[]" /> 
     <aura:attribute name="label" type="String" />
 <aura:iteration items="{!v.lstRecordTypes}" var="recdTypes">   
                              <div class="slds-grid slds-wrap">
                                  <div>
                                    <ui:inputRadio class="slds-m-top_medium "   label="{!recdTypes.recordTypeLabel}" value="{!recdTypes.isDefault}" aura:id="recdTypeId" name="R1"  change="{!c.onRadio}"/>
                                    
                                    <!--ui:inputRadio class="slds-m-top_medium " text="{!recdTypes}" aura:id="recdTypeId" name="R1" value="" change="{!c.onRadio}"/-->
                                </div>
                                  &nbsp;<div class="slds-col slds-m-top_small">{!recdTypes}</div><br></br>                                       
                              </div>
                               
                                   
                            </aura:iteration>
                        </div>&nbsp; &nbsp;
                    </div>                   
                </div>
                <div class="slds-modal__footer">
                    <lightning:button class="slds-button slds-button--neutral" onclick="{!c.closeModal}">Cancel</lightning:button>
                    <lightning:button class="slds-button slds-button--brand" onclick="{!c.RedirectToOpp}">Continue</lightning:button>

CONTROLLER
(
{
   doInit: function(component, event, helper) {    
      component.set("v.isOpen", true);
      var action = component.get("c.getRecordTypes");
      action.setCallback(this, function(response) {
         var state = response.getState();
         if (state === "SUCCESS") {
          console.log(response.getReturnValue());
           component.set("v.lstRecordTypes",response.getReturnValue());
             // var selected = component.get("v.label"); 
               // component.set("v.selectedRecord", selected); 
         } 
         else if (state == "ERROR") {
            var toastEvent = $A.get("e.force:showToast");
            toastEvent.setParams({
               "title": "Error!",
               "message": "Please contact your administrator"
            });
            toastEvent.fire();
         }    
      });
      $A.enqueueAction(action);
   },   

Apex Class
 @AuraEnabled
public static List<recordTypeWrapper.DisplayRecordTypes> getRecordTypes() {
        List<recordTypeWrapper.DisplayRecordTypes> lstRecordTypes = 
        new List<recordTypeWrapper.DisplayRecordTypes>();
        List<Schema.RecordTypeInfo> recordtypes = Submission__c.SObjectType.getDescribe().getRecordTypeInfos(); 
        for(RecordTypeInfo rt : recordtypes){
            if(rt.getName() != 'Master')
                if(rt.isAvailable()==True){
               recordTypeWrapper.DisplayRecordTypes recordType = 
                new recordTypeWrapper.DisplayRecordTypes();
                recordType.recordTypeId =rt.getRecordTypeId();
                recordType.recordTypeLabel = rt.getName();
                recordType.isDefault =rt.isDefaultRecordTypeMapping();
                lstRecordTypes.add(recordType);
            }
       }
        system.debug('lstRecordTypes' +lstRecordTypes);
        return lstRecordTypes;

}

WRAPPER CLASS

public class recordTypeWrapper {
 /*******************************************/
    /* Wrapper class to display Record Types      */
    /*****************************************/
    
    public class DisplayRecordTypes {
        
        @AuraEnabled public boolean isDefault;
        @AuraEnabled public string recordTypeLabel;
        @AuraEnabled public string recordTypeId;
        
        public DisplayRecordTypes(){
            isDefault = false;
            recordTypeLabel = '';
            //recordTypeId = '';
        }
    }
}
sfdcMonkey.comsfdcMonkey.com
here is your solution update your code with below code:
apex class :
@AuraEnabled
public static List<recordTypeWrapper.DisplayRecordTypes> getRecordTypes() {
        List<recordTypeWrapper.DisplayRecordTypes> lstRecordTypes =
        new List<recordTypeWrapper.DisplayRecordTypes>();
        List<Schema.RecordTypeInfo> recordtypes = Submission__c.SObjectType.getDescribe().getRecordTypeInfos();
        for(RecordTypeInfo rt : recordtypes){
            if(rt.getName() != 'Master')
                if(rt.isAvailable()==True){
               recordTypeWrapper.DisplayRecordTypes recordType =
                new recordTypeWrapper.DisplayRecordTypes();
                recordType.recordTypeId =rt.getRecordTypeId();
                recordType.recordTypeLabel = rt.getName();
                recordType.isDefault =rt.isDefaultRecordTypeMapping();
                lstRecordTypes.add(recordType);
            }
       }
        system.debug('lstRecordTypes' +lstRecordTypes);
        return lstRecordTypes;

}


wrapper class :
public class recordTypeWrapper {
 /*******************************************/
    /* Wrapper class to display Record Types      */
    /*****************************************/
    
    public class DisplayRecordTypes {
        
        @AuraEnabled public boolean isDefault; 
        @AuraEnabled public string recordTypeLabel;
        @AuraEnabled public string recordTypeId;
        
        public DisplayRecordTypes(){
            isDefault = false;
            recordTypeLabel = '';
            recordTypeId = '';
        }
    }
}
aura component :
<aura:attribute name="isOpen" type="boolean" default="false" />
    <aura:attribute name="selectedRecord" type="String"/>            
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    <aura:attribute name="lstRecordTypes" type="recordTypeWrapper.DisplayRecordTypes[]" /> 
    <aura:attribute name="label" type="String" />
    
    <aura:iteration items="{!v.lstRecordTypes}" var="recdTypes">   
        <div class="slds-grid slds-wrap">
            <div>
                <ui:inputRadio text="{!recdTypes.recordTypeId}" class="slds-m-top_medium" label="{!recdTypes.recordTypeLabel}" value="{!recdTypes.isDefault}" aura:id="recdTypeId" name="R1"  change="{!c.onRadio}"/>
            </div>
        </div> 
    </aura:iteration>
    
    <div class="slds-modal__footer">
       <lightning:button class="slds-button slds-button--neutral" onclick="{!c.closeModal}">Cancel</lightning:button>
       <lightning:button class="slds-button slds-button--brand" onclick="{!c.RedirectToOpp}">Continue</lightning:button>
    </div>
js :
({
    doInit: function(component, event, helper) {    
        component.set("v.isOpen", true);
        var action = component.get("c.getRecordTypes");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                console.log(response.getReturnValue());
                component.set("v.lstRecordTypes",response.getReturnValue());
                var res = response.getReturnValue();  
                
                // set default record type value to attribute    
                for(var i = 0; i < res.length; i++){
                    if(res[i].isDefault){
                        component.set("v.selectedRecord", res[i].recordTypeId);
                    }
                }
                
            } 
            else if (state == "ERROR") {
                var toastEvent = $A.get("e.force:showToast");
                toastEvent.setParams({
                    "title": "Error!",
                    "message": "Please contact your administrator"
                });
                toastEvent.fire();
            }    
        });
        $A.enqueueAction(action);
    },
    
    onRadio : function(component,event,helper){
        var recId = event.getSource().get("v.text");
        component.set("v.selectedRecord" , recId);
    } ,
    
    RedirectToOpp : function(component,event,helper){
        alert(component.get("v.selectedRecord"));
    } ,
    
    
})
Thanks, let us know if it helps you , or if you have any issue with it
This was selected as the best answer