Click here to Skip to main content
15,881,882 members
Articles / Web Development / XHTML

Google Like Search TextBox

Rate me:
Please Sign up or sign in to vote.
3.92/5 (21 votes)
11 Aug 2009CPOL3 min read 166.4K   8.5K   24   32
Google Like Search TextBox

Introduction

Many of us are using Google as a search engine. There are many reasons why we prefer Google, but one of the reasons is that Google suggests the possible search results and makes life easy. This search Suggest Textbox is very useful in many of our web applications. This article will help you to implement Search Suggest Textbox.

The user will type a character in the search textbox.Onkeyup event will get fired. It calls the method which is responsible for processing AJAX and receives a response. This response will be shown using DIV tags.

Background

AJAX Request will be processed through JavaScript using the XMLHttpRequest object.

With the XMLHttpRequest object, Internet Explorer clients can retrieve and submit XML data directly to a Web server without reloading the page. To convert XML data into renderable HTML content, use the client-side XML DOM or Extensible Stylesheet Language Transformations (XSLT) to compose HTML elements for presentation.

Using the Code

The code uploaded with this article contains mainly three files:

  1. Welcome.aspx
  2. SearchSuggest.js
  3. Result.aspx

Let's see each page in detail.

Welcome.aspx

This page has a search Textbox which displays the suggested search results while the user is typing in the search textbox.

ASP.NET
<script language="JavaScript" type="text/javascript" src="SearchSuggest.js"></script>

The above code will import SearchSuggest.js file which is responsible for asynchronous postback.

CSS
<style type="text/css" media="screen">
         body
         {
          font: 11px arial;
          }
      .suggest_link
      {
      background-color: #FFFFFF;
      padding: 2px 6px 2px 6px;
      }
      .suggest_link_over
      {
      background-color: #3366CC;
      padding: 2px 6px 2px 6px;
      }
      #search_suggest
      {
      position: absolute;
      background-color: #FFFFFF;
      text-align: left;
      border: 1px solid #000000;
      }
   </style>

The above CSS code is for displaying selected/unselected from the suggestion results:

XML
  <input type="text" id="txtSearch" name="txtSearch" alt="Search Criteria"     
	önkeyup="searchSuggest(event);" autocomplete="off" style="width: 544px" /> 
    
<div id=""search_suggest""></div>

    <input type="submit" id="cmdSearch" name="cmdSearch" 
			value="Search" alt="Run Search" />

txtSearch is the textbox for search. A method searchSuggest(event) from SearchSuggest.js is called on onkeyup event of it. We have to use onkeyup event so that on every single type of character, search suggest should process and give the corresponding result.
div search_suggest is hidden. It will be visible when a result is found for the corresponding typed characters.

Search submit button to search the results. The scope of this article is only upto the search suggest. One can enhance functionality on click of search button. This article does not have any code of onclick of Search button.

SearchSuggest.js

This file has code for AJAX Request using XMLHTTPRequest object.

JavaScript
function getXmlHttpRequestObject() 
{	
    if (window.XMLHttpRequest) 
    {
        return new XMLHttpRequest();	
        //For all the new browsers
    } 
    else if(window.ActiveXObject) 
    {
        //for IE5,IE6
        return new ActiveXObject("Microsoft.XMLHTTP");	
    }
    else
    {
        alert("Time to upgrade your browser?");	
      }
}

getXmlHttpRequestObject function will return the object of XMLHttpRequest depending upon the browser type. For Internet Explorer 5, Internet Explorer 6, it creates ActiveXObject from "Microsoft.XMLHTTP".

JavaScript
//Our XmlHttpRequest object to get the auto suggestvar 
searchReq = getXmlHttpRequestObject();

function searchSuggest(e) 
{
var key = window.event ? e.keyCode : e.which;

if (key==40 || key==38)
{
scrolldiv(key); 
}
else
{
if (searchReq.readyState == 4 || searchReq.readyState == 0) 
{
var str = escape(document.getElementById('txtSearch').value);
strOriginal=str;
searchReq.open("GET", 'Result.aspx?search=' + str, true);		
searchReq.onreadystatechange = handleSearchSuggest;
searchReq.send(null);	
}
} 	
}

The function searchSuggest will accept send request to Result.aspx and get response from it. While requesting, it will send the typed characters in Search Text box as querystring. Based on the search criteria result.aspx will process and send the result back. The result.aspx will send the response back in string format. The search result is concatenated by "~" , which will be handled in handleSearchSuggest method. and creates Div tag for each result.

Result.aspx.cs

The purpose of Result.aspx is to process Ajax request, so it does not have any code in HTML. It has only one line aspx page.
In the Code behind file, it validates the query string, takes search string and processes it to the database. Then response back result in string format. The generated string concatenated by "~".

C#
private void Getresult()
    {
        DataTable dt = new DataTable();
       
         SqlConnection con = new SqlConnection
	("Data Source=Local;Initial Catalog=Rahul;User ID=sa;Password=sa");
         
        SqlCommand cmd=new SqlCommand();
        cmd.Connection=con;
        cmd.CommandType= CommandType.StoredProcedure;
        
        cmd.CommandText="SFund";

        //SFund is Stored Procedure Name which accepts 
        //parameter as @Client_Name and gives the search Result
        
        SqlParameter parClientName = new SqlParameter("@Client_Name", SqlDbType.VarChar);
        parClientName.Value = clientName;
        cmd.Parameters.Add(parClientName);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        StringBuilder sb = new StringBuilder(); 
       
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            { 
                sb.Append(dt.Rows[i].ItemArray[0].ToString()  + "~");   
            }
        }

           Response.Write(sb.ToString());   

    }

Request

This is the first article I am posting on The Code Project. You can download the code from the link at the top of this article. 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead Wellsfargo Inc
India India
Working as a Lead-Software with 15+ years of Experience in Software development.

Comments and Discussions

 
QuestionWonderful work and very helpful Pin
Member 1232229311-Aug-17 1:09
Member 1232229311-Aug-17 1:09 
AnswerRe: Wonderful work and very helpful Pin
Rahul Garad9-Nov-17 9:59
Rahul Garad9-Nov-17 9:59 
QuestionIt worked. How to do OnBlur of the Text Box? Pin
Member 1140969314-Oct-16 7:36
Member 1140969314-Oct-16 7:36 
PraiseThank you perfectly working Pin
Rasma Raj24-Apr-16 22:54
Rasma Raj24-Apr-16 22:54 
QuestionPlease Provide Database File Pin
aarif moh shaikh18-Sep-14 22:50
professionalaarif moh shaikh18-Sep-14 22:50 
AnswerRe: Please Provide Database File Pin
Rahul Garad20-Nov-14 10:54
Rahul Garad20-Nov-14 10:54 
QuestionEnter key Pin
Member 1055817329-Jan-14 8:38
Member 1055817329-Jan-14 8:38 
AnswerRe: Enter key Pin
Rahul Garad18-Feb-14 5:23
Rahul Garad18-Feb-14 5:23 
Questiongreat Pin
Sergio TM26-Jan-14 14:34
Sergio TM26-Jan-14 14:34 
AnswerRe: great Pin
Rahul Garad18-Feb-14 5:23
Rahul Garad18-Feb-14 5:23 
QuestionHow to Use Gridview for same code. Pin
Ostwal Aarti25-Sep-13 22:03
Ostwal Aarti25-Sep-13 22:03 
BugError : Microsoft JScript runtime error: 'handleSearchSuggest' is undefined Pin
Manohar Adiga10-Sep-13 0:09
Manohar Adiga10-Sep-13 0:09 
GeneralRe: Error : Microsoft JScript runtime error: 'handleSearchSuggest' is undefined Pin
Jolly Tri13-Oct-14 2:52
Jolly Tri13-Oct-14 2:52 
QuestionFantastic Pin
Member 102499573-Sep-13 4:41
Member 102499573-Sep-13 4:41 
AnswerRe: Fantastic Pin
Member 1140969314-Oct-16 7:41
Member 1140969314-Oct-16 7:41 
GeneralMy vote of 5 Pin
VardhanJai20-Jun-13 1:41
VardhanJai20-Jun-13 1:41 
QuestionStored Procedure Pin
Sharepoint coder new 31-Jan-13 8:08
Sharepoint coder new 31-Jan-13 8:08 
Can you please put in the stored procedure as well. I am new to development and coding and i am doing something similar
QuestionNice Pin
Dz0n Walker18-Oct-12 5:21
Dz0n Walker18-Oct-12 5:21 
AnswerRe: Nice Pin
Rahul Garad18-Oct-12 16:02
Rahul Garad18-Oct-12 16:02 
GeneralMy vote of 5 Pin
ransems21-Jan-12 6:45
ransems21-Jan-12 6:45 
GeneralRe: My vote of 5 Pin
Rahul Garad26-Mar-12 3:08
Rahul Garad26-Mar-12 3:08 
QuestionWorked great with little or no code change Pin
ransems21-Jan-12 6:43
ransems21-Jan-12 6:43 
AnswerRe: Worked great with little or no code change Pin
Rahul Garad26-Mar-12 3:07
Rahul Garad26-Mar-12 3:07 
AnswerWorks Fine Pin
Lakshmikantham Babu28-Nov-11 17:55
Lakshmikantham Babu28-Nov-11 17:55 
GeneralRe: Works Fine Pin
Rahul Garad1-Dec-11 0:00
Rahul Garad1-Dec-11 0:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.