Ajax (1) Apex Class (12) Apex Trigger (2) Community (2) Home Page (1) HTML (4) Integration (3) JS (7) KB (1) Label (1) Licenses (1) Listing (1) Log (1) OOPs (5) Sharing (1) Static Resource (1) Test Class (3) URI (1) Visualforce (10)

Friday 17 April 2015

Custom Lookup Salesforce

<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');
  }

}

No comments:

Post a Comment