后台:
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 AjaxPro;
using ThirdParty;
using ThirdParty.Net;
public partial class Demo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Utility.RegisterTypeForAjax(typeof(Demo),this.Page);
}
[AjaxMethod(HttpSessionStateRequirement.ReadWrite)] //AJAX可以读写Session的值
public ArrayList GetSearchItems(string query)
{
ArrayList items = new ArrayList();
string SQL = "SELECT Number_C,Name_C FROM wl_client_info WHERE CHARINDEX('" + query + "',LOWER((select dbo.fun_getPY(Number_C)))) = 1 or Number_C like '" + query + "%' ";
DataTable DT = new DataTable();
DT = LiTianPing.SQLServerDAL.DbHelperSQL.Query(SQL).Tables[0]; //底层类返回列表的函数
for (int i = 0; i < DT.Rows.Count; i++)
{
string[] Item ={ getStr(DT.Rows[i]["Number_C"].ToString())," "};
items.Add(Item);
}
return items;
}
public string getStr(string originStr)
{
string Result;
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");
byte[] bstr = encoding.GetBytes(originStr);
Result = encoding.GetString(bstr);
return Result;
}
}
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo.aspx.cs" Inherits="Demo" %>
<%@ Register Assembly="AjaxLookup" Namespace="ThirdParty.Net" TagPrefix="Ajax" %>
<!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>
<script language="javascript" src="js/browser_detection.js" mce_src="js/browser_detection.js"></script>
<script language="javascript" src="js/lookup.js" mce_src="js/lookup.js" scriptfile="css/lookup.js"></script>
<script language="javascript" src="js/axLookup.js" mce_src="js/axLookup.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<Ajax:AjaxLookup ID="AjaxLookup1" runat="server" CallBackFunction="Demo.GetSearchItems"></Ajax:AjaxLookup>
</form>
</body>
</html>
最后在数据库的查询分析器中运行此代码:(拼音查询呼应汉字首字母)
Create function fun_getPY
(
@str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (
select top 1 PY
from
(
select 'A' as PY,N'驁' as word
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC
)
else @word
end)
set @str=right(@str,len(@str)-1)
end
return @PY
end
全部搞定,可调试的时候 JS老是报错:Demo(类名)未定义
查来查去,原来web.config中<httpHandlers>需要配置
<add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
至关重要!
这样就完满完成了!