<apex:page standardController="Contact" extensions="MyCustomLookupController" id="Page" tabstyle="Contact"> <script type="text/javascript"> function openLookup(baseURL, width, modified, searchParam){ var originalbaseURL = baseURL; var originalwidth = width; var originalmodified = modified; var originalsearchParam = searchParam; alert(modified+'hello'+baseURL); var lookupType = baseURL.substr(baseURL.length-3, 3); if (modified == '1') baseURL = baseURL + searchParam; var isCustomLookup = false; // Following "001" is the lookup type for Account object so change this as per your standard or custom object if(lookupType == "001"){ var urlArr = baseURL.split("&"); var txtId = ''; if(urlArr.length > 2) { urlArr = urlArr[1].split('='); txtId = urlArr[1]; } // Following is the url of Custom Lookup page. You need to change that accordingly baseURL = "/apex/CustomAccountLookup?txt=" + txtId; // Following is the id of apex:form control "myForm". You need to change that accordingly baseURL = baseURL + "&frm=" + escapeUTF("{!$Component.myForm}"); if (modified == '1') { baseURL = baseURL + "&lksearch=" + searchParam; } // Following is the ID of inputField that is the lookup to be customized as custom lookup if(txtId.indexOf('Account') > -1 ){ isCustomLookup = true; } } if(isCustomLookup == true){ openPopup(baseURL, "lookup", 350, 480, "width="+width+",height=480,toolbar=no,status=no,directories=no,menubar=no,resizable=yes,scrollable=no", true); } else { if (modified == '1') originalbaseURL = originalbaseURL + originalsearchParam; openPopup(originalbaseURL, "lookup", 350, 480, "width="+originalwidth+",height=480,toolbar=no,status=no,directories=no,menubar=no,resizable=yes,scrollable=no", true); } } </script> <apex:sectionHeader title="Demo" subtitle="Custom Lookup" /> <apex:form id="myForm"> <apex:PageBlock id="PageBlock"> <apex:pageBlockButtons > <apex:commandButton action="{!Save}" value="Save"/> </apex:pageBlockButtons> <apex:pageBlockSection columns="1" title="Custom Lookup"> <apex:inputField value="{!Contact.LastName}"/> <apex:inputField id="Account" value="{!contact.AccountId}" /> <apex:inputField id="owner" value="{!contact.HR_Manager__c}" /> </apex:pageBlockSection> </apex:PageBlock> </apex:form> </apex:page> ===========================
<apex:page controller="CustomAccountLookupController" title="Search" showHeader="false" sideBar="false" tabStyle="Account" id="pg"> <apex:form > <apex:outputPanel id="page" layout="block" style="margin:5px;padding:10px;padding-top:2px;"> <apex:tabPanel switchType="client" selectedTab="name1" id="tabbedPanel"> <!-- SEARCH TAB --> <apex:tab label="Search" name="tab1" id="tabOne"> <apex:actionRegion > <apex:outputPanel id="top" layout="block" style="margin:5px;padding:10px;padding-top:2px;"> <apex:outputLabel value="Search" style="font-weight:Bold;padding-right:10px;" for="txtSearch"/> <apex:inputText id="txtSearch" value="{!searchString}" /> <span style="padding-left:5px"><apex:commandButton id="btnGo" value="Go" action="{!Search}" rerender="searchResults"></apex:commandButton></span> </apex:outputPanel> <apex:outputPanel id="pnlSearchResults" style="margin:10px;height:350px;overflow-Y:auto;" layout="block"> <apex:pageBlock id="searchResults"> <apex:pageBlockTable value="{!results}" var="a" id="tblResults"> <apex:column > <apex:facet name="header"> <apex:outputPanel >Name</apex:outputPanel> </apex:facet> <apex:outputLink value="javascript:top.window.opener.lookupPick2('{!FormTag}','{!TextBox}_lkid','{!TextBox}','{!a.Id}','{!a.Name}', false)" rendered="{!NOT(ISNULL(a.Id))}">{!a.Name}</apex:outputLink> </apex:column> </apex:pageBlockTable> </apex:pageBlock> </apex:outputPanel> </apex:actionRegion> </apex:tab> <!-- NEW ACCOUNT TAB --> <!-- <apex:tab label="New Account" name="tab2" id="tabTwo"> <apex:pageBlock id="newAccount" title="New Account" > <apex:pageBlockButtons > <apex:commandButton action="{!saveAccount}" value="Save"/> </apex:pageBlockButtons> <apex:pageMessages /> <apex:pageBlockSection columns="2"> <apex:repeat value="{!$ObjectType.Account.FieldSets.CustomAccountLookup}" var="f"> <apex:inputField value="{!Account[f]}"/> </apex:repeat> </apex:pageBlockSection> </apex:pageBlock> </apex:tab>--> </apex:tabPanel> </apex:outputPanel> </apex:form> </apex:page>======================public with sharing class MyCustomLookupController {
private ApexPages.StandardController con;
public Contact contact {get;set;}
public MyCustomLookupController(ApexPages.StandardController controller) {
con=controller;
contact = new Contact();
}
public MyCustomLookupController() {
}
public PageReference Save()
{
// con.save();
ApexPages.StandardController c=new ApexPages.StandardController(contact );
c.save();
PageReference goTothis=new PageReference('/'+c.getId());
goTothis.setRedirect(true);
return goTothis;
}
}===============
public with sharing class CustomAccountLookupController { public Account account {get;set;} // new account to create public List<Account> results{get;set;} // search results public string searchString{get;set;} // search keyword public CustomAccountLookupController() { account = new Account(); // get the current search string searchString = System.currentPageReference().getParameters().get('krishna'); runSearch(); } // performs the keyword search public PageReference search() { runSearch(); return null; } // prepare the query and issue the search command private void runSearch() { // TODO prepare query string for complex serarches & prevent injections results = performSearch(searchString); } // run the search and return the records found. private List<Account> performSearch(string searchString) { String soql = 'select id, name from account '; if(searchString != '' && searchString != null) soql = soql + ' where name LIKE \'%' + searchString +'%\''; soql = soql + ' limit 25'; System.debug(soql); return database.query(soql); } // save the new account record public PageReference saveAccount() { insert account; // reset the account account = new Account(); return null; } // used by the visualforce page to send the link to the right dom element public string getFormTag() { return System.currentPageReference().getParameters().get('frm'); } // used by the visualforce page to send the link to the right dom element for the text box public string getTextBox() { return System.currentPageReference().getParameters().get('txt'); } } |