I tried SOSL for the first time in recently on 15th October, 2011 when I got an email from someone asking for help in developing a search functionality using visualforce.
His is requirements was simple, he wanted to search on contacts but wanted to use only single text box for searching on contacts. I had earlier developed a simple search functionality using SOQL and Java Script Remoting, so I just modified that page with SOSL working in the controller.
Here is the code for Visualforce page:
<apex:page controller="remoteTest">
<script>
var contacts;
function contactSearch(name) {
myp1.remoteTest.findContacts(name,handleContacts);
}
function handleContacts(result, event) {
if(event.type == 'exception') {
alert(event.message);
} else {
contacts = result;
showContacts();
}
}
function showContacts() {
var newList = "";
for(var i = 0; i < contacts.length; i++) {
newList += "<a href onclick='showContact("+i+")'>"+ contacts[i].Name+"</a><BR/>";
}
document.getElementById('contactList').innerHTML = newList;
}
function showContact(index) {
document.getElementById('phone').innerHTML = 'Phone: '+contacts[index].Phone;
document.getElementById('email').innerHTML = 'Email: '+contacts[index].Email;
}
</script>
<input id="nameField" type="text" onKeyDown="contactSearch(document.getElementById('nameField').value)" />
<button onChange="contactSearch(document.getElementById('nameField').value)">Search Contacts</button>
<div style="width: 50%;">
<div id="contactList"></div>
<div style="float: right;">
<div id="phone"></div>
<div id="email"></div>
</div>
</div>
</apex:page>
Demo Page: http://testdomain5-developer-edition.na3.force.com/MySiteHere is the controller code:
global class remoteTest {
@RemoteAction
global static Contact[] findContacts(string Name) {
Name = '%'+Name+'%';
Contact[] c = [SELECT ID, Name, Phone, Email from Contact where NAME LIKE :Name ];
return c;
}
}
Good topic to implement. it will help a lot. Please keep posted.
ReplyDeleteGreat stuff Sankalp..
ReplyDeleteawesome bro...keep up the good work..
ReplyDelete