开发环境 VS.NET 2005 C# Oracle AjaxPro
最近忙没时间详细解释,先把通用的源码贴出自己看。
出于对性能的考虑,把省市两级写成JS数组,把县区(镇)两级写在 Oracle 里。通过 JS 触发 C# 去读取数据库,然后将数据回传给 JS ,再绑定显示。
操作 <select> 采用更通用的 createElement() 而没有使用 options.add()
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Area.aspx.cs" Inherits="Area" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="" >
<head runat="server">
<title>地区</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td>
<select id="SF">
<option selected="selected">—请选择—</option>
</select>
</td>
<td>
<select id="CS">
<option selected="selected">—请选择—</option>
</select>
</td>
<td>
<select id="Xian">
<option selected="selected">—请选择—</option>
</select>
</td>
<td>
<select id="Zhen">
<option selected="selected">—请选择—</option>
</select>
</td>
</tr>
</table>
<script type="text/javascript">
var aDQ=new Array();
aDQ[0]=["11","北京","0","bj"];
aDQ[1]=["12","天津","0","tj"];
aDQ[2]=["13","河北","0","hb"];
aDQ[3]=["14","山西","0","shang"];
aDQ[4]=["15","内蒙古","0","nmg"];
aDQ[5]=["21","辽宁","0","ln"];
aDQ[6]=["22","吉林","0","jl"];
aDQ[7]=["23","黑龙江","0","hlj"];
aDQ[8]=["31","上海","0","sh"];
aDQ[9]=["32","江苏","0","js"];
aDQ[10]=["33","浙江","0","zhej"];
aDQ[11]=["34","安徽","0","ah"];
aDQ[12]=["35","福建","0","fj"];
aDQ[13]=["36","江西","0","jw"];
aDQ[14]=["37","山东","0","sd"];
aDQ[15]=["41","河南","0","he"];
aDQ[16]=["42","湖北","0","hu"];
aDQ[17]=["43","湖南","0","hn"];
aDQ[18]=["44","广东","0","gd"];
aDQ[19]=["45","广西","0","gx"];
aDQ[20]=["46","海南","0","hain"];
aDQ[21]=["50","重庆","0","cq"];
aDQ[22]=["51","四川","0","sc"];
aDQ[23]=["52","贵州","0","gui"];
aDQ[24]=["53","云南","0","yn"];
aDQ[25]=["54","西藏","0","wc"];
aDQ[26]=["61","陕西","0","shangx"];
aDQ[27]=["62","甘肃","0","gs"];
aDQ[28]=["63","青海","0","qh"];
aDQ[29]=["64","宁夏","0","nx"];
aDQ[30]=["65","新疆","0","xj"];
aDQ[31]=["71","台湾","0","tw"];
aDQ[32]=["81","香港","0","xg"];
aDQ[33]=["82","澳门","0","am"];
aDQ[34]=["1101","北京城区","11","bjcq"];
aDQ[35]=["1102","北京县区","11","bjxq"];
aDQ[36]=["1201","天津城区","12","tjcq"];
aDQ[37]=["1202","天津县区","12","tjxq"];
aDQ[38]=["1301","石家庄","13","sjz"];
aDQ[39]=["1302","唐山","13","hbts"];
aDQ[40]=["1303","秦皇岛","13","qhd"];
aDQ[41]=["1304","邯郸","13","hd"];
aDQ[42]=["1305","邢台","13","hbxt"];
aDQ[43]=["1306","保定","13","bd"];
aDQ[44]=["1307","张家口","13","zjk"];
aDQ[45]=["1308","承德","13","cd"];
aDQ[46]=["1309","沧州","13","hbcz"];
aDQ[47]=["1310","廊坊","13","lf"];
aDQ[48]=["1311","衡水","13","hbhs"];
aDQ[49]=["1401","太原","14","ty"];
aDQ[50]=["1402","大同","14","dt"];
aDQ[51]=["1403","阳泉","14","yq"];
aDQ[52]=["1404","长治","14","swcz"];
aDQ[53]=["1405","晋城","14","swjc"];
aDQ[54]=["1406","朔州","14","swsz"];
aDQ[55]=["1501","呼和浩特","15","hhht"];
aDQ[56]=["1502","包头","15","bt"];
aDQ[57]=["1503","乌海","15","nmgwh"];
aDQ[58]=["1504","赤峰","15","cf"];
aDQ[59]=["1521","呼伦贝尔盟","15","hlbem"];
aDQ[60]=["1522","兴安盟","15","xam"];
aDQ[61]=["1523","哲里木盟","15","zlmm"];
aDQ[62]=["1525","锡林郭勒盟","15","wlglm"];
aDQ[63]=["1526","乌兰察布盟","15","wlcbm"];
aDQ[64]=["1527","鄂尔多斯","15","eeds"];
aDQ[65]=["1528","巴彦淖尔盟","15","bynem"];
aDQ[66]=["1529","阿拉善盟","15","alsm"];
aDQ[67]=["2101","沈阳","21","lnsy"];
aDQ[68]=["2102","大连","21","dl"];
aDQ[69]=["2103","鞍山","21","as"];
aDQ[70]=["2104","抚顺","21","lnfs"];
aDQ[71]=["2105","本溪","21","bx"];
aDQ[72]=["2106","丹东","21","dd"];
aDQ[73]=["2107","锦州","21","jz"];
aDQ[74]=["2108","营口","21","yk"];
aDQ[75]=["2109","阜新","21","fx"];
aDQ[76]=["2110","辽阳","21","lnly"];
aDQ[77]=["2111","盘锦","21","pj"];
aDQ[78]=["2112","铁岭","21","lntl"];
aDQ[79]=["2113","朝阳","21","cy"];
aDQ[80]=["2114","葫芦岛","21","hld"];
aDQ[81]=["2201","长春","22","cc"];
aDQ[82]=["2202","吉林","22","jljl"];
aDQ[83]=["2203","四平","22","sp"];
aDQ[84]=["2204","辽源","22","jlly"];
aDQ[85]=["2205","通化","22","th"];
aDQ[86]=["2206","白山","22","bs"];
aDQ[87]=["2207","松原","22","jlsy"];
aDQ[88]=["2208","白城","22","bc"];
aDQ[89]=["2224","延边","22","jlyb"];
aDQ[90]=["2301","哈尔滨","23","heb"];
aDQ[91]=["2302","齐齐哈尔","23","qqhe"];
aDQ[92]=["2303","鸡西","23","hljjw"];
aDQ[93]=["2304","鹤岗","23","hg"];
aDQ[94]=["2305","双鸭山","23","sys"];
aDQ[95]=["2306","大庆","23","dq"];
aDQ[96]=["2307","伊春","23","hljyc"];
aDQ[97]=["2308","佳木斯","23","jms"];
aDQ[98]=["2309","七台河","23","qth"];
aDQ[99]=["2310","牡丹江","23","mdj"];
aDQ[100]=["2311","黑河","23","hh"];
aDQ[101]=["3101","上海市区","31","shsq"];
aDQ[102]=["3102","上海县区","31","shxq"];
aDQ[103]=["3201","南京","32","nj"];
aDQ[104]=["3202","无锡","32","ww"];
aDQ[105]=["3203","徐州","32","xz"];
aDQ[106]=["3204","常州","32","jscz"];
aDQ[107]=["3205","苏州","32","shu"];
aDQ[108]=["3206","南通","32","nt"];
aDQ[109]=["3207","连云港","32","lyg"];
aDQ[110]=["3208","淮安","32","ha"];
aDQ[111]=["3209","盐城","32","jsyc"];
aDQ[112]=["3210","扬州","32","yz"];
aDQ[113]=["3211","镇江","32","jszj"];
aDQ[114]=["3212","泰州","32","tz"];
aDQ[115]=["3213","宿迁","32","sq"];
aDQ[116]=["3301","杭州","33","han"];
aDQ[117]=["3302","宁波","33","nb"];
aDQ[118]=["3303","温州","33","zjwz"];
aDQ[119]=["3304","嘉兴","33","jx"];
aDQ[120]=["3305","湖州","33","zjhz"];
aDQ[121]=["3306","绍兴","33","sx"];
aDQ[122]=["3307","金华","33","jh"];
aDQ[123]=["3308","衢州","33","zjqz"];
aDQ[124]=["3309","舟山","33","zjzs"];
aDQ[125]=["3310","台州","33","zjtz"];
aDQ[126]=["3311","义乌","33","yw"];
aDQ[127]=["3325","丽水","33","zjls"];
aDQ[128]=["3401","合肥","34","hf"];
aDQ[129]=["3402","芜湖","34","wh"];
aDQ[130]=["3403","蚌埠","34","bb"];
aDQ[131]=["3404","淮南","34","hnx"];
aDQ[132]=["3405","马鞍山","34","mas"];
aDQ[133]=["3406","淮北","34","huib"];
aDQ[134]=["3407","铜陵","34","tl"];
aDQ[135]=["3408","安庆","34","aq"];
aDQ[136]=["3410","黄山","34","hs"];
aDQ[137]=["3411","滁州","34","ahcz"];
aDQ[138]=["3412","阜阳","34","fy"];
aDQ[139]=["3413","宿州","34","ahsz"];
aDQ[140]=["3416","毫州","34","ahhz"];
aDQ[141]=["51011117","池州","34",""];
aDQ[142]=["51011118","六安","34",""];
aDQ[143]=["51011119","宣城 ","34",""];
aDQ[144]=["3501","福州","35","fz"];
aDQ[145]=["3502","厦门","35","xm"];
aDQ[146]=["3503","莆田","35","pt"];
aDQ[147]=["3504","三明","35","sm"];
aDQ[148]=["3505","泉州","35","qz"];
aDQ[149]=["3506","漳州","35","fzz"];
aDQ[150]=["3507","南平","35","np"];
aDQ[151]=["3508","龙岩","35","fjly"];
aDQ[152]=["3509","宁德","35","fjnd"];
aDQ[153]=["3601","南昌","36","jwnc"];
aDQ[154]=["3602","景德镇","36","jdz"];
aDQ[155]=["3603","萍乡","36","px"];
aDQ[156]=["3604","九江","36","jj"];
aDQ[157]=["3605","新余","36","xy"];
aDQ[158]=["3606","鹰潭","36","jwyt"];
aDQ[159]=["3607","赣州","36","jwgz"];
aDQ[160]=["3701","济南","37","jn"];
aDQ[161]=["3702","青岛","37","qd"];
aDQ[162]=["3703","淄博","37","zb"];
aDQ[163]=["3704","枣庄","37","sdzz"];
aDQ[164]=["3705","东营","37","sddy"];
aDQ[165]=["3706","烟台","37","yt"];
aDQ[166]=["3707","潍坊","37","wf"];
aDQ[167]=["3708","济宁","37","sdjn"];
aDQ[168]=["3709","泰安","37","ta"];
aDQ[169]=["3710","威海","37","sdwh"];
aDQ[170]=["3711","日照","37","rz"];
aDQ[171]=["3712","莱芜","37","lw"];
aDQ[172]=["3713","临沂","37","ly"];
aDQ[173]=["3714","德州","37","sddz"];
aDQ[174]=["3715","聊城","37","lc"];
aDQ[175]=["4101","郑州","41","zhen"];
aDQ[176]=["4102","开封","41","kf"];
aDQ[177]=["4103","洛阳","41","hnly"];
aDQ[178]=["4104","平顶山","41","pds"];
aDQ[179]=["4105","安阳","41","ay"];
aDQ[180]=["4106","鹤壁","41","hebi"];
aDQ[181]=["4107","新乡","41","xx"];
aDQ[182]=["4108","焦作","41","hnjz"];
aDQ[183]=["4109","濮阳","41","zy"];
aDQ[184]=["4110","许昌","41","xc"];
aDQ[185]=["4111","漯河","41","zhe"];
aDQ[186]=["4112","三门峡","41","smx"];
aDQ[187]=["4113","南阳","41","ny"];
aDQ[188]=["4114","商丘","41","hnsq"];
aDQ[189]=["4115","信阳","41","hnxy"];
aDQ[190]=["4201","武汉","42","hbwh"];
aDQ[191]=["4202","黄石","42","hhs"];
aDQ[192]=["4203","十堰","42","sy"];
aDQ[193]=["4205","宜昌","42","hbyc"];
aDQ[194]=["4206","襄樊","42","xf"];
aDQ[195]=["4207","鄂州","42","ez"];
aDQ[196]=["4208","荆门","42","hbjm"];
aDQ[197]=["4209","孝感","42","hbxg"];
aDQ[198]=["4210","荆州","42","hbjz"];
aDQ[199]=["4211","黄冈","42","hbhg"];
aDQ[200]=["4212","咸宁","42","xn"];
aDQ[201]=["4228","恩施","42","es"];
aDQ[202]=["4301","长沙","43","cs"];
aDQ[203]=["4302","株洲","43","hnzz"];
aDQ[204]=["4303","湘潭","43","xt"];
aDQ[205]=["4304","衡阳","43","hnhy"];
aDQ[206]=["4305","邵阳","43","shao"];
aDQ[207]=["4306","岳阳","43","yy"];
aDQ[208]=["4307","常德","43","hncd"];
aDQ[209]=["4308","张家界","43","zjj"];
aDQ[210]=["4309","益阳","43","hnyy"];
aDQ[211]=["4310","郴州","43","hncz"];
aDQ[212]=["4311","永州","43","hnyz"];
aDQ[213]=["4312","怀化","43","hnhh"];
aDQ[214]=["4331","湘西","43","xw"];
aDQ[215]=["4401","广州","44","gz"];
aDQ[216]=["4402","韶关","44","sg"];
aDQ[217]=["4403","深圳","44","sz"];
aDQ[218]=["4404","珠海","44","zh"];
aDQ[219]=["4405","汕头","44","st"];
aDQ[220]=["4406","佛山","44","fs"];
aDQ[221]=["4407","江门","44","jm"];
aDQ[222]=["4408","湛江","44","zj"];
aDQ[223]=["4409","茂名","44","mm"];
aDQ[224]=["4412","肇庆","44","zq"];
aDQ[225]=["4413","惠州","44","hz"];
aDQ[226]=["4414","梅州","44","mz"];
aDQ[227]=["4415","汕尾","44","shanw"];
aDQ[228]=["4416","河源","44","hy"];
aDQ[229]=["4417","阳江","44","yj"];
aDQ[230]=["4418","清远","44","qy"];
aDQ[231]=["4419","东莞","44","dz"];
aDQ[232]=["4420","中山","44","zs"];
aDQ[233]=["4451","潮州","44","cz"];
aDQ[234]=["4452","揭阳","44","jy"];
aDQ[235]=["4453","云浮","44","yf"];
aDQ[236]=["4501","南宁","45","nn"];
aDQ[237]=["4502","柳州","45","lz"];
aDQ[238]=["4503","桂林","45","gwgl"];
aDQ[239]=["4504","梧州","45","gwwz"];
aDQ[240]=["4505","北海","45","bh"];
aDQ[241]=["4506","防城港","45","fcg"];
aDQ[242]=["4507","钦州","45","gqz"];
aDQ[243]=["4508","贵港","45","gg"];
aDQ[244]=["4509","玉林","45","yl"];
aDQ[245]=["4601","海口","46","hk"];
aDQ[246]=["4602","三亚","46","hnsy"];
aDQ[247]=["5002","重庆县区","50","zqxq"];
aDQ[248]=["5003","重庆城区","50","zqcq"];
aDQ[249]=["5101","成都","51","sccd"];
aDQ[250]=["5103","自贡","51","zg"];
aDQ[251]=["5104","攀枝花","51","pzh"];
aDQ[252]=["5105","泸州","51","sczz"];
aDQ[253]=["5106","德阳","51","dy"];
aDQ[254]=["5107","绵阳","51","my"];
aDQ[255]=["5108","广元","51","gy"];
aDQ[256]=["5109","遂宁","51","sn"];
aDQ[257]=["5110","内江","51","scnj"];
aDQ[258]=["5111","乐山","51","ls"];
aDQ[259]=["5113","南充","51","nc"];
aDQ[260]=["5115","宜宾","51","yb"];
aDQ[261]=["5116","广安","51","ga"];
aDQ[262]=["5130","达州","51","scdz"];
aDQ[263]=["5132","阿坝","51","ab"];
aDQ[264]=["5133","甘孜","51","scgz"];
aDQ[265]=["5134","凉山","51","scls"];
aDQ[266]=["5201","贵阳","52","gzgy"];
aDQ[267]=["5202","六盘水","52","lps"];
aDQ[268]=["5203","遵义","52","gzzy"];
aDQ[269]=["5223","黔西南","52","qwn"];
aDQ[270]=["5226","黔东南","52","qdn"];
aDQ[271]=["5227","黔南","52","qn"];
aDQ[272]=["5301","昆明","53","km"];
aDQ[273]=["5303","曲靖","53","qj"];
aDQ[274]=["5304","玉溪","53","yx"];
aDQ[275]=["5323","楚雄","53","cx"];
aDQ[276]=["5325","红河","53","ynhh"];
aDQ[277]=["5326","文山","53","ws"];
aDQ[278]=["5328","西双版纳","53","wsbn"];
aDQ[279]=["5329","大理","53","yndl"];
aDQ[280]=["5331","德宏","53","dh"];
aDQ[281]=["5333","怒江","53","nuj"];
aDQ[282]=["5334","迪庆","53","yndq"];
aDQ[283]=["51010963","丽江市","53","ljs"];
aDQ[284]=["51012663","保山","53",""];
aDQ[285]=["5401","拉萨","54","wcls"];
aDQ[286]=["6101","西安","61","wa"];
aDQ[287]=["6102","铜川","61","tc"];
aDQ[288]=["6103","宝鸡","61","swbj"];
aDQ[289]=["6104","咸阳","61","swxy"];
aDQ[290]=["6105","渭南","61","swwn"];
aDQ[291]=["6106","延安","61","ya"];
aDQ[292]=["6107","汉中","61","swhz"];
aDQ[293]=["6201","兰州","62","gslz"];
aDQ[294]=["6202","嘉峪关","62","jyg"];
aDQ[295]=["6203","金昌","62","jc"];
aDQ[296]=["6204","白银","62","by"];
aDQ[297]=["6205","天水","62","ts"];
aDQ[298]=["6229","临夏","62","lx"];
aDQ[299]=["6230","甘南","62","gn"];
aDQ[300]=["6301","西宁","63","wn"];
aDQ[301]=["6322","海北","63","hai"];
aDQ[302]=["6323","黄南","63","huang"];
aDQ[303]=["6325","海南","63","qhhn"];
aDQ[304]=["6326","果洛","63","gl"];
aDQ[305]=["6327","玉树","63","ys"];
aDQ[306]=["6328","海西","63","hw"];
aDQ[307]=["6401","银川","64","yc"];
aDQ[308]=["6402","石嘴山","64","szs"];
aDQ[309]=["6403","吴忠","64","wz"];
aDQ[310]=["6405","中卫","64","zw"];
aDQ[311]=["6501","乌鲁木齐","65","wlmq"];
aDQ[312]=["6502","克拉玛依","65","klmy"];
aDQ[313]=["6523","昌吉","65","cj"];
aDQ[314]=["6527","博尔塔拉","65","betl"];
aDQ[315]=["6528","巴音郭楞","65","bygl"];
aDQ[316]=["6530","克孜勒苏柯尔克孜","65","kzlskekz"];
aDQ[317]=["6540","伊犁","65","xjyl"];
aDQ[318]=["7101","台北","71",""];
aDQ[319]=["7102","宜兰","71",""];
aDQ[320]=["7103","桃园","71",""];
aDQ[321]=["7104","新竹","71",""];
aDQ[322]=["7105","苗栗","71",""];
aDQ[323]=["7106","台中","71",""];
aDQ[324]=["7107","彰化","71",""];
aDQ[325]=["7108","南投","71",""];
aDQ[326]=["7109","云林","71",""];
aDQ[327]=["7110","嘉义","71",""];
aDQ[328]=["7111","台南","71",""];
aDQ[329]=["7112","高雄","71",""];
aDQ[330]=["7113","屏东","71",""];
aDQ[331]=["7114","台东","71",""];
aDQ[332]=["7115","花莲","71",""];
aDQ[333]=["7116","澎湖","71",""];
aDQ[334]=["7117","基隆","71",""];
aDQ[335]=["7118","金门","71",""];
aDQ[336]=["7119","马祖","71",""];
aDQ[337]=["8101","新界","81",""];
aDQ[338]=["8102","香港岛","81",""];
aDQ[339]=["8103","大屿山","81",""];
aDQ[340]=["8104","九龙","81",""];
aDQ[341]=["8201","澳门本岛","82",""];
aDQ[342]=["8202","凼仔","82",""];
aDQ[343]=["8203","路环","82",""];
//通过 DOM 创建下拉框
//obj:下拉框的 options 数据集
//id:下拉框的 id
function CreateDropDownList(obj,id)
......{
var sel=document.getElementById(id);
sel.options.length=1; //保存"—请选择—"
//对于省份、城市常用 Array 存储,对于县、镇则用C#从数据库读取
if(obj==null)return;
if(obj instanceof Array)
......{
for(var i=0;i<obj.length;i++)
......{
var op=document.createElement("option");
op.setAttribute("value",obj[i][0]);
var txt=document.createTextNode(obj[i][1]);
op.appendChild(txt);
sel.appendChild(op);
}
}
else
......{
for(var i=0;i<obj.Rows.length;i++) //注意这里是 length 不是 Count
......{
var op=document.createElement("option");
op.setAttribute("value",obj.Rows[i].ID); //注意区分大小写
var txt=document.createTextNode(obj.Rows[i].NAME); //根 DataTable 的列名称要一致
op.appendChild(txt);
sel.appendChild(op);
}
}
//绑定下一个下拉框
switch(id)
......{
case "SF":sel.onchange=function()......{ClearXianZhen();CreateDropDownList(GetArray(this.value),"CS");};break;
case "CS":sel.onchange=function()......{ClearZhen();CreateDropDownList(Area.GetDataTable(this.value,AreaEnum.Xian).value,"Xian");};break; //JS 向 C# 传递参数,并取得 C# 的返回值
case "Xian":sel.onchange=function()......{CreateDropDownList(Area.GetDataTable(this.value,AreaEnum.Zhen).value,"Zhen");};break; //返回值.value
default:sel.onchange=function()......{alert(this.value);};break;
}
}
//执行入口
var arr=GetArray("0");
CreateDropDownList(arr,"SF");
//获取要求的数组
//tar=所属的省份ID
function GetArray(val)
......{
var temp=new Array();
var j=0;
for(var i=0;i<aDQ.length;i++)
......{
if(aDQ[i][2].toString()==val)
......{
temp[j]=aDQ[i];
//temp[j].push(aDQ[i]);
j++;
}
}
return temp;
}
//清空"镇"下拉框
function ClearZhen()
......{
CreateDropDownList(null,"Zhen");
}
//清空"县"和"镇"下拉框
function ClearXianZhen()
......{
CreateDropDownList(null,"Xian");
CreateDropDownList(null,"Zhen");
}
</script>
</form>
</body>
</html>
using System;
using System.Data;
using System.Data.OracleClient;
public partial class Area : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
//将C#的类和枚举分别注册到JS里
AjaxPro.Utility.RegisterTypeForAjax(typeof(Area));
AjaxPro.Utility.RegisterEnumForAjax(typeof(AreaEnum));
}
/**//// <summary>
/// 取得下拉框所需数据
/// </summary>
/// <param name="UpID">上一级ID</param>
/// <param name="ae">县/镇</param>
/// <returns>返回 DataTable</returns>
[AjaxPro.AjaxMethod]
public DataTable GetDataTable(string UpID, AreaEnum ae)
...{
if (String.IsNullOrEmpty(UpID))
return null;
string link = "server=XXX;user=XXX;pwd=XXX;";
OracleConnection conn = new OracleConnection(link);
//Oracle 返回的 DataTable 里的列名全是大写,在页面取值时记得大写
string sql;
if (Enum.Equals(ae, AreaEnum.Xian))
sql = "SELECT id,name FROM City WHERE THREEID=0 AND TWOID=" + UpID;
else
sql = "SELECT id,name FROM City WHERE THREEID=" + UpID;
OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
}
/**//// <summary>
/// 地区枚举
/// </summary>
public enum AreaEnum
...{
/**//// <summary>
/// 县
/// </summary>
Xian,
/**//// <summary>
/// 镇
/// </summary>
Zhen
}
到此基本功能实现,还有些功能(通过域名\IP来判断地区并直接绑定,将选择好的地区保存,方便的读/存城市信息以便做成控件 等等)。有空再写完。
记得在 Web.config 的 <system.web> 加入
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>