yuezhonghu

悠然现南山...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

后台:

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"/>

至关重要!

这样就完满完成了!