You need to sign in to do that
Don't have an account?

pass values to component from vf page
Hi,
I have inputtext field(<apex:inputText id="idSearchGlobal" />) in vf page (not using any custom controller and extender in vf page)and want to pass that inputtext value to the component .
So my question is how to assign this inputtextfield value to component attribute.
<c:GlobalSearch_Component attributevalue='..how i need to pass inputtextfield value here............'></c:GlobalSearch_Component>
I have inputtext field(<apex:inputText id="idSearchGlobal" />) in vf page (not using any custom controller and extender in vf page)and want to pass that inputtext value to the component .
So my question is how to assign this inputtextfield value to component attribute.
<c:GlobalSearch_Component attributevalue='..how i need to pass inputtextfield value here............'></c:GlobalSearch_Component>
You need APEX to do that. It could be either a custom controller or an extension.
You can define a variable in the controller and use it on your text field as well as the component.
Your APEX class will look like this. And your VF code will look like this. Hope this helps.
<apex:page docType="html-5.0" applyBodyTag="false" applyHtmlTag="false" showHeader="false" standardStylesheets="false" standardController="Lead" extensions="GlobalSearch_Extender">
<apex:inputText id="idSearchGlobal" style="border-radius:10px;" value="{!searchStr}" />
<!-- <button type='button' class="rounded" id="searchText" data-toggle="modal" href="#globaSearch" >Search</button> -->
<apex:commandButton value="Search" html-data-toggle="modal" html-data-target="#globaSearch" rerender="true" immediate="true"/>
<div id="globaSearch" class="modal fade" role="dialog" width="100%">
<div class="modal-dialog">
{!searchStr}
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Search Results</h4>
</div>
<div class="modal-body">
<c:GlobalSearch_Component searchGlobal="{!searchStr}" rerender="idSearchGlobal"></c:GlobalSearch_Component>
</div>
</div>
</div>
</div>
and the extender is
public class GlobalSearch_Extender{
public string searchStr{get; set;}
public GlobalSearch_Extender(){}
public GlobalSearch_Extender(ApexPages.StandardController controller)
{}
}
and component is
<apex:component controller="GlobalSearch" allowDML="true">
<apex:attribute name="searchGlobal" type="string" description="TODO: Describe me" assignTo="{!searchStr}" />
<apex:attribute name="rerender" type="String" description="TODO: Describe me" required="true"/>
<script type="text/javascript">
function closeMe(lid){
// window.location.href ='/apex/Lead_Layout_Template?id='+lid;
// window.close();
setTimeout(function(){document.location.href = '/apex/Lead_Layout_Template?id='+lid},50);
}
</script>
<div class = "bs" style="padding:3px;">
<!-- <apex:inputText value="{!searchStr}" style="border-radius:10px;"/>
<apex:commandButton value="Search" action="{!searchText}" style="border-radius:10px;"/>-->
<apex:outputPanel title="" id="error">
<apex:pageMessages ></apex:pageMessages>
</apex:outputPanel>
<div class="row">
<apex:pageBlock title="Leads" id="leads">
<table class="table table-striped text-centered" cellspacing="40" style="white-space:nowrap; width:100%;" id="GlobalSearchLeadsTable" >
<thead>
<tr>
<td></td>
<td>Name</td>
<td>Email</td>
</tr>
</thead>
<tbody>
<apex:repeat value="{!leadList}" var="lead" >
<tr class="repeater">
<td></td>
<td>
<apex:commandLink value="{!lead.Name}" onclick="closeMe('{!URLENCODE(LEFT(lead.id,15))}');return true;"> </apex:commandLink>
</td>
<td >
<apex:commandLink value="{!lead.email}" onclick="closeMe('{!URLENCODE(LEFT(lead.id,15))}');return true;"></apex:commandLink>
</td>
</tr>
</apex:repeat>
</tbody>
</table>
</apex:pageBlock>
</div>
<div class="row">
<apex:pageBlock title="Contacts" id="conts">
<table class="table table-striped text-centered" cellspacing="40" style="white-space:nowrap; width:100%;" id="GlobalSearchContactsTable" >
<thead>
<tr>
<td></td>
<td>Name</td>
<td>Email</td>
</tr>
</thead>
<tbody>
<apex:repeat value="{!conList}" var="cont" >
<tr class="repeater">
<td></td>
<td>
<apex:commandLink value="{!cont.Name}" onclick="closeMe('{!URLENCODE(LEFT(cont.id,15))}');return true;"> </apex:commandLink>
</td>
<td >
<apex:commandLink value="{!cont.email}" onclick="closeMe('{!URLENCODE(LEFT(cont.id,15))}');return true;" ></apex:commandLink>
</td>
</tr>
</apex:repeat>
</tbody>
</table>
</apex:pageBlock>
</div>
</div>
</apex:component>
and controller for component is
Public with sharing class GlobalSearch{
Public List<Lead> leadList {get;set;}
Public List<contact> conList{get;set;}
Public String searchStr1;
Public String getsearchStr(){
return searchStr1;
}
Public void setsearchStr(string s)
{try{
searchStr1=s;
searchText();}
catch(exception ex){}
}
Public GlobalSearch(){
}
Public void searchText(){
leadList = New List<Lead>();
conList = New List<contact>();
system.debug('searchStr'+searchStr1);
if(searchStr1.length() > 1){
String searchStr2 = '*'+searchStr1+'*';
String searchQuery = 'FIND \'' + searchStr2 + '\' IN ALL FIELDS RETURNING Lead(Id,Name,email),Contact(name,email)';
List<List <sObject>> searchList = search.query(searchQuery);
leadList = ((List<Lead>)searchList[0]);
conList = ((List<contact>)searchList[1]);
system.debug('leadList.size()'+leadList.size());
if(conList.size() == 0 && leadList.size() == 0){
apexPages.addmessage(new apexpages.message(apexpages.severity.Error, 'Sory, no results returned with matching string..'));
return;
}
}
else{
apexPages.addmessage(new apexpages.message(apexpages.severity.Error, 'Please enter at least two characters..'));
return;
}
}
}