Skip to main content
Hi,

Page which will display all accounts in the org, there should be one button for Add Account. On click of this button, popup will ask for account details (Mandatory details only) and after click on submit button this new account will add to DB, go to previous page and previous page also will refresh.

Thanks

KMK
4 respuestas
  1. 23 oct 2018, 10:44
    Hi,

    Greetings to you!

    Below is the sample code which I have tested in my org and it is working fine. Kindly modify the code as per your requirement.

    Component:

    <aura:component controller="PopupFormC"

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

    <aura:attribute name="PageHeading" type="String" default="MODAL POPUP" />

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

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

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

    <aura:attribute name="accForm" type="Account" default="{'sobjectType' : 'Account'}"/>

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

    <aura:handler event="force:refreshView" action="{!c.doinit}" />

    <div class="slds-m-top--xx-large">

    <div class="slds-page-header">

    <div class="slds-align--absolute-center">

    <div class="slds-text-heading--large">

    {!v.PageHeading}

    </div>

    </div>

    </div>

    </div>

    <br/> <br/>

    <lightning:button label="Create Account PopUp"

    iconName="utility:new_window"

    iconPosition="left"

    variant="brand"

    onclick="{!c.newPopup}"

    />

    <div role="dialog" tabindex="-1" aria-labelledby="header43" aura:id="Modalbox1" class="slds-modal slds-modal_large">

    <div class="slds-modal__container" style="width: 65%;">

    <div class="slds-modal__header">

    ACCOUNT

    </div>

    <div class="slds-modal__content slds-p-around--medium">

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

    <div class="slds-page-header" style="padding-top: 9px; padding-bottom: 9px;, padding-right: 9px;, padding-left: 10px;">

    <h3 style="font-size: 1rem;" title="">Account Information</h3>

    </div>

    </div>

    <div class="slds-grid slds-p-top_medium">

    <div class="slds-size_6-of-12 slds-p-left_xx-large slds-p-horizontal_x-large " >

    <lightning:input label="Account Name" name="myname" value="{!v.accForm.Name}"/>

    </div>

    <div class="slds-size_5-of-12 slds-p-left_xx-small slds-p-horizontal_x-large " >

    <lightning:input label="Phone" name="myname" value="{!v.accForm.Phone}"/>

    </div>

    </div>

    <div class="slds-grid slds-p-top_x-small">

    <div class="slds-size_6-of-12 slds-p-left_xx-large slds-p-horizontal_x-large " >

    <lightning:input label="Account Number" name="mynumber" value="{!v.accForm.AccountNumber}"/>

    </div>

    <div class="slds-size_5-of-12 slds-p-left_xx-small slds-p-horizontal_x-large " >

    <lightning:input label="Description" name="myphone" value="{!v.accForm.Description}"/>

    </div>

    </div>

    </div>

    <div class="slds-modal__footer">

    <lightning:button label="Save" onclick="{!c.saveModal}" />

    <lightning:button label="close" onclick="{!c.closeNewModal}" />

    </div>

    </div>

    </div>

    <div class="slds-section slds-is-open">

    <h3 class="slds-section__title slds-theme_shade">

    <span class="slds-truncate slds-p-horizontal_small" title="Section Title">Accounts</span>

    </h3>

    <br/>

    <table class="slds-table slds-table--bordered slds-table--striped slds-table--cell-buffer slds-table--fixed-layout">

    <thead>

    <tr class="slds-text-heading--label">

    <th scope="col"><div class="slds-truncate" title="Account Name">Account Name</div></th>

    <th scope="col"><div class="slds-truncate" title="Phone">Phone</div></th>

    </tr>

    </thead>

    <tbody>

    <aura:iteration items="{!v.mydata}" var="row" indexVar="index">

    <tr>

    <th scope="row"><div class="slds-truncate" title="{!row.Name}">{!row.Name}</div></th>

    <td><div class="slds-truncate" title="{!row.Phone}">{!row.Phone}</div></td>

    </tr>

    </aura:iteration>

    </tbody>

    </table>

    </div>

    </aura:component>

    Controller:

    ({

    doinit : function(component, event, helper) {

    var action = component.get('c.fetchAcc');

    action.setCallback(this, function(response){

    var state = response.getState();

    if(state === "SUCCESS"){

    var allValues = response.getReturnValue();

    console.log("allValues--->>> " + allValues);

    component.set('v.mydata', allValues);

    }

    else if(state === "ERROR") {

    var errors = response.getError();

    if(errors){

    if(errors[0] && errors[0].message){

    console.log("Error Message: " + errors[0].message);

    }

    }

    else{

    console.log("Unknown Error");

    }

    }

    });

    $A.enqueueAction(action);

    },

    newPopup : function(component, event, helper){

    var cmpTarget = component.find('Modalbox1');

    var cmpBack = component.find('Modalbackdrop');

    $A.util.addClass(cmpTarget, 'slds-fade-in-open');

    $A.util.addClass(cmpBack, 'slds-backdrop--open');

    },

    saveModal : function(component, event, helper){

    var regForm = component.get("v.accForm");

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

    action.setParams({regForm1 : regForm});

    action.setCallback(this, function(response) {

    var state = response.getState();

    if (state === "SUCCESS") {

    $A.get('e.force:refreshView').fire();

    var cmpTarget = component.find('Modalbox1');

    var cmpBack = component.find('Modalbackdrop');

    $A.util.removeClass(cmpBack,'slds-backdrop--open');

    $A.util.removeClass(cmpTarget, 'slds-fade-in-open');

    }

    else if (state === "ERROR") {

    var errors = response.getError();

    if (errors) {

    if (errors[0] && errors[0].message) {

    console.log("Error message: " +

    errors[0].message);

    }

    }

    else {

    console.log(response.getReturnValue());

    }

    }

    });

    $A.enqueueAction(action);

    },

    closeNewModal : function(component, event, helper){

    var cmpTarget = component.find('Modalbox1');

    var cmpBack = component.find('Modalbackdrop');

    $A.util.removeClass(cmpBack,'slds-backdrop--open');

    $A.util.removeClass(cmpTarget, 'slds-fade-in-open');

    },

    })

    CSS:

    .THIS {

    }

    .THIS .slds-section__title{

    background-color: YellowGreen;

    color: white

    }

    .THIS .slds-modal__header{

    background-color: OliveDrab;

    color: white

    }

    Apex:

    public class PopupFormC {

    @AuraEnabled

    public static List<Account> fetchAcc (){

    return [SELECT Id, Name, Phone FROM Account ORDER BY CreatedDate desc];

    }

    @AuraEnabled

    public static void saveDetails (Account regForm1){

    INSERT regForm1;

    }

    }

    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 the future.

    Thanks and Regards,

    Khan Anas
0/9000