最近做的一個項目中要添加一個小功能,就是在客戶輸入藥品名稱的時候能自動產生藥材名的拼音首字元及藥材名稱第一個字的筆畫數,在以後的藥材檢索中中用到。
為了方便藥材資訊錄入我想到用AJAX解決,漢字拼音和筆畫可以用微軟提供的Visual Studio International Pack類庫。
1、引用ChnCharInfo.dll、ChnCharInfoResource.dll到WEB項目中:
2、頁面引用Jquery指令碼庫並加一個JS函數:
ChnCharInfo
<script src="UI/js/jquery.js" type="text/javascript" language="javascript"></script>
<script language="javascript" type="text/javascript">
<!--
function ChnCharInfo(o){
$.getJSON(
"ChnCharInfo.ashx?s=" + encodeURI(o.value),
function(json){
try{
$("#medspell").value = json.pingying; //拼音
$("#medpen").value = json.bihua; //筆畫
}catch(e){}
}
);
}
// -->
</
3、TextBox 加上 onblur 事件: TextBox1.Attributes.Add("onblur", "ChnCharInfo(this)");
4、新增一個 ChnCharInfo.ashx 檔案:
ChnCharInfo
<%@ WebHandler Language="C#" Class="ChnCharInfo" %>
using System;
using System.Web;
using System.Collections.ObjectModel;
using Microsoft.International.Converters.PinYinConverter;
public class ChnCharInfo : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
string cn_bh = "bihua:\"";
string cn_py = "pingying:\"";
string s = context.Server.UrlDecode(context.Request.QueryString["s"]);
try
{
char[] c = s.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
try
{
int bh = ChineseChar.GetStrokeNumber(c[i]);
cn_bh += bh.ToString();
break;
}
catch { }
}
for (int i = 0; i < c.Length; i++)
{
try
{
ChineseChar x = new ChineseChar(c[i]);
ReadOnlyCollection<string> roc = x.Pinyins;
foreach (string py in roc)
{
cn_py += py.Substring(0, 1);
break;
}
}
catch { }
}
}
finally
{
context.Response.ContentType = "text/plain";
context.Response.Write("{" + cn_py + "\"," + cn_bh + "\"}");
context.Response.End();
}
}
public bool IsReusable {
get {
return false;
}
}
5、測試一下 http://localhost:/../ChnCharInfo.ashx?s=漢字,如果一切正常會顯示 {pingying:"HZ",bihua:"5"}
這樣就完成了這個小功能,是不是很簡單,呵。。
ChnCharInfo.dll、ChnCharInfoResource.dll檔案可在附件中下載得到。
附件:/Files/relax/ChnCharInfo.rar