You need to sign in to do that
Don't have an account?
Eric Blaxton 11
Lightning Visual Force Command button behavior
Hi and thanks in advance.
Converted to Lightning and having issues with VF command button.
I've done research and cannot figure this one out. I could create a lightning component, but don't want to change things too much.
Classic Behavior: the VFP resides in a page. When the command button "add" is clicked, the page is does its thing and is refreshed within the parent page
Lightning Behavior: the VFP looks great, but when the command button is clicked, a new window is opened up and I cannot get back to the parent Case easily. I would like the same behavior as classic, if possible.
VF page
VF code
APEX Class
Converted to Lightning and having issues with VF command button.
I've done research and cannot figure this one out. I could create a lightning component, but don't want to change things too much.
Classic Behavior: the VFP resides in a page. When the command button "add" is clicked, the page is does its thing and is refreshed within the parent page
Lightning Behavior: the VFP looks great, but when the command button is clicked, a new window is opened up and I cannot get back to the parent Case easily. I would like the same behavior as classic, if possible.
VF page
VF code
<apex:page tabStyle="Case" standardController="Case" extensions="AddFuelTypes" lightningstylesheets="true"> <!-- Case --> <style> .apexp .bPageBlock.apexDefaultPageBlock .pbBody .pbSubheader { background-color: transparent; color: Black } body .bPageBlock, body #bodyCell .bResource .secondaryPalette, body .secondaryPalette.bPageBlock, body .individualPalette .secondaryPalette.bPageBlock, body .bodyDiv .genericTable, body .genericPageBlockTable, body .bodyDiv .bSubBlock, body .bComponentBlock .bPageBlock, body .bMyDashboard .bPageBlock, body.rlHoverFrame .bPageBlock, body.subjectSelectionPopup div.choicesBox, body.lookupTab .secondaryPalette.bPageBlock, body.popupTab .secondaryPalette.bPageBlock, body.UserTagStatsPage .secondaryPalette.bPageBlock { background-color: transparent; color: Black } </style> <apex:pageBlock > <apex:pageBlockSection title="Fuel Delivery Summary" columns="2" > <apex:pageBlockSectionItem > <apex:outputLabel value="Total Gallons Rq" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Total_Gallons_Rq__c}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Carrier Confirm Date/Time" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Carrier_Confirm_Date_Time__c}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Total Gallons Delivered" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Total_Gallons_Delivered__c}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Delivered Date/Time" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Delivered_Time__c}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Fuel Order Variance" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Fuel_Order_Variance__c}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Fuel Delivery Time" style="font-weight:bold"/> <apex:outputField value="{!caseObj.Fuel_Delivery_Time__c}"/> </apex:pageBlockSectionItem> </apex:pageBlockSection> </apex:pageBlock> <!-- Add FuelType form --> <apex:form > <apex:pageBlock > <apex:pageMessages /> <apex:pageBlockSection title="Add Fuel Types" columns="3"> <apex:pageBlockSectionItem > <apex:outputLabel value="Fuel Type" style="font-weight:bold"/> <apex:outputPanel styleClass="requiredInput" layout="block" id="pwPanel" > <apex:outputPanel styleClass="requiredBlock"/> <apex:selectList value="{!fuelObj.Fuel_Type__c}" size="1" required="true"> <apex:selectOptions value="{!FuelTypeOptions}"/> </apex:selectList> </apex:outputPanel> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Requested Gallons" style="font-weight:bold"/> <apex:inputField value="{!fuelObj.Requested_Gallons__c}" required="true"/> </apex:pageBlockSectionItem> </apex:pageBlockSection> <div align="Center" draggable="false" > <apex:commandButton action="{!saveFuelType}" value="Add" reRender="" onclick="redirectTo('/apex/Add_Fuel_Types','');return true;" /> </div> </apex:pageBlock> </apex:form> <apex:form > <div name='rerender' style="overflow-x:auto; height: 200px;"> <apex:pageBlock > <apex:pageBlockTable value="{!fuelTypes}" var="ft"> <apex:column value="{!ft.Fuel_Type__c}"/> <apex:column value="{!ft.Requested_Gallons__c}"/> <apex:column value="{!ft.Delivered_Gallons__c}"/> <apex:column value="{!ft.Gallon_Variance__c}"/> <apex:column value="{!ft.CreatedDate}"/> <apex:column > <apex:commandLink value="Remove" action="{!removeFuelType}" > <apex:param name="selectedFuelTypeId" value="{!ft.Id}"/> </apex:commandLink> </apex:column> </apex:pageBlockTable> <apex:outputText rendered="{!fuelTypes.size==0}"> <table width="100%"> <tr ><th>Fuel Type</th> <th>Requested Gallons</th> <th>Delivered Gallons</th> <th>Gallon Variance</th> <th>Created Date</th> </tr> <tr></tr> <tr><td colspan="5" style="text-align:center;">No Records</td></tr> </table> </apex:outputText> </apex:pageBlock> </div> </apex:form> </apex:page>
APEX Class
public class AddFuelTypes { public string result {get; set;} public Case caseObj {get; set;} public Fuel_Type__c fuelObj {get; set;} public List<Fuel_Type__c> fuelTypes {get; set;} public string selectedFuelTypeId {get; set;} // Selected fuel Type public boolean haveFuelTypes {get; set;} // Flag to display no schedule error message public AddFuelTypes(ApexPages.StandardController stdController){ this.caseObj = (Case)stdController.getRecord(); // Gets the current case working on. Case has to be created first then add fuel types caseObj = [SELECT Old_Total_Gallons_Rq__c,SendtoTMW__c, Carrier_Confirm_Date_Time__c, Fuel_Order_Status__c, Fuel_Order_Variance__c, Delivered_Time__c, Total_Gallons_Delivered__c, Total_Gallons_Rq__c,Fuel_Delivery_Time__c FROM Case WHERE Id = :ApexPages.currentPage().getParameters().get('Id')]; // Get fuel order information for current case fuelTypes = [SELECT Id, Fuel_Type__c, Requested_Gallons__c, Delivered_Gallons__c, Gallon_Variance__c, CreatedDate FROM Fuel_Type__c WHERE Case__c = :caseObj.Id]; fuelObj = new Fuel_Type__c(); haveFuelTypes = false; if(fuelTypes.size() > 0) // Variable havefuelTypes starts as false. Once fuel type added set to true { haveFuelTypes = true; } // Error messages selectedFuelTypeId = ''; String temp=ApexPages.currentPage().getParameters().get('Status'); if(temp!=NULL){ if(temp.equals('false')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Duplicate fuel type cannot be entered. Please remove an existing type to add again.')); else if(temp.equals('CannotDelete')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Unable to delete, order is already Sent to TMW!')); else if(temp.equals('CannotAdd')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Unable to add, order is already Sent to TMW!')); else if(temp.equals('CannotBelower')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a valid quantity larger than 0')); else if(temp.equals('CannotBeHigher')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please enter a valid smaller quantity')); else if(temp.equals('NotAllowed')) ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, 'Please select a valid Fuel Type')); } } public List<SelectOption> getFuelTypeOptions(){ List<SelectOption> options = new List<SelectOption>(); Schema.DescribeFieldResult fieldResult = Fuel_Type__c.Fuel_Type__c.getDescribe(); List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues(); for( Schema.PicklistEntry f : ple) { options.add(new SelectOption(f.getLabel(), f.getValue())); } return options; } public PageReference saveFuelType(){ result='true'; fuelObj.Case__c = caseObj.id; if(fuelObj.Fuel_Type__c!=NULL){ if(fuelObj.Fuel_Type__c.equals('None')) // Error checking, Fuel Type cannot be None result='NotAllowed';} fuelTypes = [SELECT Id, Fuel_Type__c, Requested_Gallons__c, Delivered_Gallons__c, Gallon_Variance__c, CreatedDate FROM Fuel_Type__c WHERE Case__c = :caseObj.Id]; for(Fuel_Type__c ft : fueltypes) { if(ft.Fuel_Type__c==fuelObj.Fuel_Type__c) result='false'; } if(caseObj.SendtoTMW__c!=true) { if(!result.equals('NotAllowed')){ if(result.equals('true')){ // Requested Gallons must be greater than 0 and less than 100,000 gallons. Else throw error if(fuelObj.Requested_Gallons__c>=1) { if(fuelObj.Requested_Gallons__c<100000) insert fuelObj; else result='CannotBeHigher'; }else result='CannotBelower'; }else result='false'; } } else result='CannotAdd'; // Redirect back to same page PageReference reRend = new PageReference('/apex/Add_Fuel_Types?id='+ caseObj.Id+'&Status='+result); reRend.setRedirect(true); return reRend; } public PageReference removeFuelType(){ //Error checking when Removing fuel type. Fuel Types cannot be removed once order has been sent to TMW selectedFuelTypeId = ApexPages.currentPage().getParameters().get('selectedFuelTypeId'); List<Fuel_Type__c> FuelTypesToBeRemoved = [SELECT Id, Fuel_Type__c FROM Fuel_Type__c WHERE Id = :selectedFuelTypeId]; system.debug('FT Id ...........' + selectedFuelTypeId); system.debug('FT Control here ...........' + FuelTypesToBeRemoved); if(caseObj.SendtoTMW__c!=true) delete FuelTypesToBeRemoved; else result='CannotDelete'; // Redirect back to same page PageReference reRend = new PageReference('/'+caseObj.Id); reRend.setRedirect(true); return reRend; } }
All Answers
it looks like Lightning converted my Visual Force page to an app. When the button is clicked i get this "https://x.lightning.force.com/one/one.app#(long alphanumeric)"