Example of SOSL (Custom search Interface)

********* Controller ***********************


Public with sharing class SearchExp {
 String keyword;
 Public List<opportunity> opp {get;set;}
 Public List<lead> l{get;set;}
 Public List<contact> c{get;set;}
 Public List<account> a{get;set;}

 public string getkeyword(){
        return keyword;
    }
 public void setkeyword(String s){
        keyword = s;
    }

 Public void soslExp(){
   opp = New List<opportunity>();
   l = New List<lead>();
   c = New List<contact>();
   a = New List<account>();
   List<list <sObject>> searchList = [FIND:keyword IN ALL FIELDS RETURNING  Account (Id,Name,type),Contact(name,email),Opportunity(name,StageName),Lead(company,name,status) ];
   a = ((List<account>)searchList[0]);
   c  = ((List<contact>)searchList[1]);
   opp = ((List<opportunity>)searchList[2]);
   l  = ((List<lead>)searchList[3]);
  }
}


************ Visualforce Page *******************


<apex:page controller="SearchExp">
  <apex:form >
      <apex:inputText value="{!keyword}"/>
      <apex:commandButton value="Search" action="{!soslExp}"/>
  </apex:form>
  <apex:pageBlock title="Account">
      <apex:pageblockTable value="{!a}" var="acc">
          <apex:column value="{!acc.name}"/>
          <apex:column value="{!acc.Type}"/>
       </apex:pageblockTable>
  </apex:pageBlock>
  <apex:pageBlock title="Contact">
      <apex:pageblockTable value="{!c}" var="con">
          <apex:column value="{!con.name}"/>
          <apex:column value="{!con.email}"/>
       </apex:pageblockTable>
  </apex:pageBlock>
  <apex:pageBlock title="Lead">
      <apex:pageblockTable value="{!l}" var="lead">
          <apex:column value="{!lead.name}"/>
          <apex:column value="{!lead.company}"/>
       </apex:pageblockTable>
  </apex:pageBlock>
  <apex:pageBlock title="Opportunities">
    <apex:pageblockTable value="{!opp}" var="opty">
      <apex:column value="{!opty.name}"/>
      <apex:column value="{!opty.StageName}"/>
    </apex:pageblockTable>
 </apex:pageBlock>
</apex:page>



******************* Screen Shot *****************************


Comments