Reputation: 16226
I have a custom Object called "Gift_c" off the Contact record. I would like to replace the standard "Gift_c" page with a visualforce page so that I can selectively hide certain fields.
All is farily straightforward.
<apex:page standardController="Gift__c" showHeader="true" >
<apex:form >
<apex:pageBlock title="" mode="Edit">
<apex:pageMessages />
<apex:pageBlockButtons >
<apex:commandButton value="Save" action="{!save}"/>
<apex:commandButton value="Cancel" action="{!cancel}"/>
</apex:pageBlockButtons>
<apex:pageBlockSection title="Basic Information" columns="1">
<apex:inputField value="{!Gift__c.Contact__c}"/>
<apex:inputField value="{!Gift__c.GiftAmount__c}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
The Challenge:
Normally when you are on a Contact and I click the "New Gift" button and the Contact_c field from the Gift_c object is populated to be the person I just came from. How can I ensure that still happens on the new Visual Force Page
Upvotes: 0
Views: 1040
Reputation: 16226
Actually this functionality comes out of the box as long as you override the "New/Edit" button to point to new page.
Upvotes: 1
Reputation: 632
There is what is known as the lkid hack. It is an undocumented feature that the values for the parent are passed as GET parameters from the New button on a related list. So you could extract the parameters that way, but it is widely accepted that this is a very flimsy solution.
Or there is a very neat solution posted here: hack-to-find-field-ids-allows-a-default-ui-new-page-to-be-pre-populated
This solution is screen scraping the standard edit page for all the lkid values in the html of the page. There are just as many reasons why this could one day just stop working, but it is probably more robust than reverse engineering the get parameters.
Upvotes: 0