Ajax AutoComplete in ASP.NET
Without using AjaxControlToolKit, we can implement AutoComplete Extender using pure Ajax Call. This article explains how to do make AutoComplete Extender.
OnKeyUp
event helps you to fetch data from database with Ajax call. Here one Handler.ashx handles the AJAX request form Client. I add a Class file to handle database operations to better coding practice. Below I explain the database helper Class
. Class
has one method:
GetTable(string sqlQuery)
This returns DataTable
after fetching data from database. And also includes Provide
Class, this Class helps to get SqlConnection
string.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
/// <summary>
/// Summary description for DBHelper
/// </summary>
public class DBHelper
{
SqlConnection connection;
SqlDataAdapter adapter;
SqlCommand command;
DataTable dataTable;
public DBHelper()
{
}
/// <summary>
///
/// </summary>
/// <param name="sqlQuery">passing SQL Query here
/// <returns>DataTable object is returned</returns>
public DataTable GetTable(string sqlQuery)
{
//creating new instance of Datatable
dataTable = new DataTable();
connection = Provider.GetConnection();
command = new SqlCommand(sqlQuery, connection);
//Open SQL Connection
connection.Open();
try
{
adapter = new SqlDataAdapter(command);
adapter.Fill(dataTable);
}
catch
{ }
finally
{
//Closing Sql Connection
connection.Close();
}
return dataTable;
}
}
public class Provider
{
public static SqlConnection GetConnection()
{
//creating SqlConnection
return new SqlConnection(ConfigurationManager.AppSettings["sqlConn"]);
}
}
Now we can look into Handler file. When request comes from Ajax Call from Client, it passes the data into our Database helper Class, handler file holds the data in DataTable
. Result data are formatted in a table and written in the context. We can add JavaScript function for selecting the data, here api_helper.AddtoTaxtBox(selectedItem)
manages client section of data.
Check Handler File
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Data;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
HttpRequest request = HttpContext.Current.Request;
//checking string null or empty
if (!string.IsNullOrEmpty(request.QueryString["name"]))
{
string name=request.QueryString["name"];
//creating instance of new database helper
DBHelper objDBHelper = new DBHelper();
//creating Sql Query
string sqlQuery = string.Format
("SELECT Name FROM User WHERE Name LIKE '{0}%'", name);
//filling data from database
DataTable dataTable = objDBHelper.GetTable(sqlQuery);
string table = string.Empty;
//table for hold data
table = "<table width='100%'>";
string td = string.Empty;
//checking datatable
if (dataTable.Rows.Count > 0)
{
for (int i = 0; i < dataTable.Rows.Count; i++)
{
//adding table rows
td += string.Format("<tr><td class='select'
onclick='api_helper.AddtoTaxtBox(this.innerHTML)'>
{0}</td></tr>", dataTable.Rows[i][0].ToString());
}
}
table += td + "</table>";
context.Response.Write(table);
}
}
public bool IsReusable {
get {
return false;
}
}
}
Now we can check how Ajax works. On Textbox onKeyUp
event, call the Ajax code. It sends the entered value into server using Ajax and the result is displayed in div
control under the search textbox.
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"
onkeyup="api_helper.callAjax();"></asp:TextBox>
<div id="myDiv"></div>
</div>
<script language="javascript" type="text/javascript">
if (typeof (api_helper) == 'undefined') { api_helper = {} }
api_helper.doAjax = function(HandlerUrl, displayDiv) {
var Req; try { Req = new XMLHttpRequest(); }
catch (e) { try { Req = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { return false; } } } Req.onreadystatechange = function() {
if (Req.readyState == 4) { var d = document.getElementById(displayDiv);
d.innerHTML = Req.responseText; } }
Req.open("GET", HandlerUrl, true); Req.send(null);
}
api_helper.callAjax = function() {
var text = document.getElementById("txtName").value;
if (text != "") {
var requestUrl = "Handler.ashx?name=" + text;
var displayDiv="myDiv";
api_helper.doAjax(requestUrl, displayDiv);
}
}
api_helper.AddtoTaxtBox = function(txt) {
document.getElementById("txtName").value = txt;
document.getElementById("myDiv").innerHTML = "";
}
</script>
</form>
</body>
</html>
Sample

Thanks for reading this article. Please feel free to comment.
Tags Ajax AutoComplete, Ajax Example.
Post Comment
fzD8k7 There may be noticeably a bundle to learn about this. I assume you made certain nice factors in options also.
zRnzAe Maybe you could write next articles referring to this
aYZy8Z Im obliged for the blog post.Thanks Again. Awesome.
zcUvmK Very neat blog.Thanks Again. Will read on...