您的位置:首页 > 其它

ajax 实现三级联动功能

2007-04-11 11:07 579 查看
注意:

var name=dt.Rows[i].areaname;        var id=dt.Rows[i].areaid;

areaname ,areaid 的大小写 很关键 ,写错就看不到结果

这个小功能没有进行细节处理,可能要根据情况,自已增修一些代码

如果需要完整代码 只要在JS中修改就可以.

====================================================

步骤一:下载ajaxPro.dll文件 放到BLL文件里,添加引用.

修改web.config 在<system.web>签记中添加

<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro" />
</httpHandlers>

在.CS文件的page_load 中添加

AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));//注册两个JS引用

在.CS文件中在写一个方法共AJAX使用

[AjaxPro.AjaxMethod]
public DataTable GetArea(int parentid)
{
//-----
}

步骤二:

在ASPX页面上放三个dropdownlist控件

给前两个控件添加onchange="loaddata(this,控件ID)"

步骤三:

写AJAX代码


<script language=javascript>


var targetid;


function loaddata(obj,targetobj)




...{


targetid = targetobj;


var areaid = obj.options[obj.selectedIndex].value;//取得选中编号


WebClass.Classlist.GetArea(areaid,result_CallBack);//获取子分类


}


function result_CallBack(response)




...{


if(response.value!=null)




...{


var dt = response.value;//.Tables[0];


if(dt!=null)




...{


document.getElementById(targetid).length=0;//清空    


for(var i=0; i<dt.Rows.length; i++)




     ...{


     var name=dt.Rows[i].areaname;


       var id=dt.Rows[i].areaid;


       document.getElementById(targetid).options.add(new Option(name,id));


     }


}


}


}


</script>

数据库


CREATE DATABASE Class


go


CREATE TABLE Area


(


areaId int identity(1,1) primary key,


areaName varchar(100),


parentId int


)


go


insert into Area(areaname,parentId) values('省A',0)


insert into Area(areaname,parentId) values('省B',0)




insert into Area(areaname,parentId) values('市1',1)


insert into Area(areaname,parentId) values('市2',1)


insert into Area(areaname,parentId) values('市3',2)


insert into Area(areaname,parentId) values('市4',2)




insert into Area(areaname,parentId) values('市1县1',3)


insert into Area(areaname,parentId) values('市1县2',3)


insert into Area(areaname,parentId) values('市2县1',4)


insert into Area(areaname,parentId) values('市2县2',4)




insert into Area(areaname,parentId) values('市3县1',5)


insert into Area(areaname,parentId) values('市3县2',5)


insert into Area(areaname,parentId) values('市4县1',6)


insert into Area(areaname,parentId) values('市4县2',6)


GO


CREATE PROC pro_sns_area_Select


(


@areaId int


)


as


select areaid,areaname from Area where parentId = @areaId



var targetid;
function loaddata(obj,targetobj)
{
targetid = targetobj;
var areaid = obj.options[obj.selectedIndex].value;//取得选中编号
WebClass.Classlist.GetArea(areaid,result_CallBack);//获取子分类
}
function result_CallBack(response)
{
if(response.value!=null)
{
var dt = response.value;//.Tables[0];
if(dt!=null)
{
document.getElementById(targetid).length=0;//清空    
for(var i=0; i
var targetid;
function loaddata(obj,targetobj)
{
targetid = targetobj;
var areaid = obj.options[obj.selectedIndex].value;//取得选中编号
WebClass.Classlist.GetArea(areaid,result_CallBack);//获取子分类
}
function result_CallBack(response)
{
if(response.value!=null)
{
var dt = response.value;//.Tables[0];
if(dt!=null)
{
document.getElementById(targetid).length=0;//清空    
for(var i=0; i
var targetid;
function loaddata(obj,targetobj)
{
targetid = targetobj;
var areaid = obj.options[obj.selectedIndex].value;//取得选中编号
WebClass.Classlist.GetArea(areaid,result_CallBack);//获取子分类
}
function result_CallBack(response)
{
if(response.value!=null)
{
var dt = response.value;//.Tables[0];
if(dt!=null)
{
document.getElementById(targetid).length=0;//清空    
for(var i=0; i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: