1. Encapsulated JS file
//****************************************** *****************
//Creation date: 2009-03-10
//Author: oloen
//Content description: Automatically complete JS class
//Usage:
// var auto = new autoComplete(client ID);
// auto.Init(document.all.client ID);
//**** *************************************************** **
//Autocomplete
function autoComplete(id)
{
var me = this;
//Autocomplete binding control client ID
me.AutoCompleteControlID
me.handle = null
me.DivResult;
me.currentIndex = -1;
me.LastIndex = -1;
me.requestObj;
me.CurrentTD = '';
if(id != null && typeof(id) != undefined)
me.AutoCompleteControlID = id;
if(me.DivResult == null||typeof(me.DivResult)=="undefined ")
{
me.DivResult = document.createElement("div");
var parent = document.getElementById(me.AutoCompleteControlID).parentElement;
if(typeof(parent)!= "undefined"){
parent.appendChild(me.DivResult);
}
}
this.Init = function(obj)
{
me.handle = obj
me.AutoCompleteControlID = obj.id
}
this.Auto = function()
{
me.DivResult.style.position = "absolute";
me.DivResult.style. top = me.handle.getBoundingClientRect().top 17;
me.DivResult.style.left = me.handle.getBoundingClientRect().left;
me.DivResult.style.width = me.handle.width ;
me.DivResult.style.height = 20;
me.DivResult.style.backgroundColor = "#ffffff";
//If you press up, down or enter
if ( event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13)
{
me.SelectItem();
}
else
{
//Restore the drop-down selection to -1
currentIndex = -1;
if(window.XMLHttpRequest)
{
me.requestObj = new XMLHttpRequest();
if(me. requestObj.overrideMimeType)
me.requestObj.overrideMimeType("text/xml");
}
else if(window.ActiveXObject)
{
try
{
me .requestObj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
me.requestObj = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(me.requestObj == null)
return;
me.requestObj.onreadystatechange = me.ShowResult;
me.requestObj.open("GET", "../ Common/AutoComplete.aspx?InputValue=" escape(me.handle.value), true);
me.requestObj.send();
}
}
this.ShowResult = function()
{
if (me.requestObj.readyState == 4)
{
me.DivResult.innerHTML = me.requestObj.responseText;
me.DivResult.style.display = "" ;
}
}
this.SelectItem = function()
{
//result
var result = document.getElementById("Tmp_AutoComplete_tblResult");
if (! result)
return;
if(result.rows[me.LastIndex] != null)
{
result.rows[me.LastIndex].style.backgroundColor = "#FFFFFF";
result.rows[me.LastIndex].style.color = "#000000";
}
var maxRow = result.rows.length;
//up
if (event.keyCode == 38 && me.currentIndex > 0)
me.currentIndex--;
//Down
if (event.keyCode == 40 && me.currentIndex me .currentIndex;
//Enter
if (event.keyCode == 13)
{
me.Select()
me.InitItem();
return;
}
if(result.rows[me.currentIndex]!=undefined)
{
//Selected color
result.rows[me.currentIndex].style.backgroundColor = "#3161CE" ;
result.rows[me.currentIndex].style.color = "#FFFFFF";
}
me.DivResult.style.height = maxRow * 15;
me.LastIndex = me. currentIndex;
}
this.Select = function()
{
var result = document.getElementById("Tmp_AutoComplete_tblResult");
if (!result)
return;
var ReturnValue = result.rows[me.currentIndex].ReturnValue;
if(ReturnValue != undefined)
{
me.DivResult.style.display = 'none';
//Set Page value
ReturnAutoComplete(ReturnValue);
}
}
this.Hide = function()
{
me.DivResult.style.display = 'none';
me.currentIndex = -1;
}
this.InitItem = function()
{
me.DivResult.style.display = 'none';
me.DivResult.innerHTML = " ";
me.currentIndex = -1;
}
me.DivResult.onclick = function()
{
me.Auto();
}
document. getElementById(me.AutoCompleteControlID).onclick = function(){
me.Auto();
}
document.getElementById(me.AutoCompleteControlID).onkeyup = function(){
me.Auto ();
}
document.getElementById(me.AutoCompleteControlID).onkeydown = function(){
if (event.keyCode == 13)
{
me.Select()
me.InitItem();
return;
}
}
document.getElementById(me.AutoCompleteControlID).onblur = function(){
me.Hide();
}
}
2 Backend query page
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System .Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI .HtmlControls;
//using System.Data.SqlClient;
//****************************** ******************************
//Creation date: 2009-03-10
//Author: oloen
//Content description: Automatically complete the background query page
//****************************************** *********************
///
/// Automatically complete the background query page
///
public partial class Common_AutoComplete : System.Web.UI.Page
{
const string tbStyle = @"";
///
/// Filter conditions
///
string Filter = string.Empty;
///
/// Query value
///
string InputValue = string. Empty;
///
/// Auto-complete category
/// Currently only supports UnitNo query in the sales system
///
string Type = string .Empty;
///
/// Return result character
///
string ReturnStr = string.Empty;
private void Page_Load(object sender, System.EventArgs e)
{
switch (Type.ToLower())
{
case "psunit":
default:
AutoPSUnitNo();
break;
}
Response.Clear();
Response.ContentType = "text/xml";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.Write(ReturnStr);
Response.End();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Filter = Request.QueryString["Filter"] ?? "";
InputValue = Request.QueryString["InputValue"] ?? "";
InputValue.Replace("'","''");
}
///
/// The sales system room number is automatically completed
///
void AutoPSUnitNo()
{
if (! string.IsNullOrEmpty(InputValue))
{
ReturnStr = @"
{0} | ", sdr["ProjectNo"].ToString());{0} | ", sdr["PhaseNo"].ToString());{0} | ", sdr["BlockNo"].ToString());{0} | ", sdr["UnitNo"].ToString());
{0} | ", "编号");{0} | ", "姓名");{0} | ", i.ToString());{0} | ", InputValue);