Ajax实现无刷新三联动下拉框

本文介绍了一种使用Ajax技术实现网页上省份、城市和区县三级联动的下拉菜单的方法。通过Ajax调用后台获取数据并实时更新下拉选项,实现了用户体验的提升。该方法适用于需要动态展示地区信息的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:
HTML
ContractedBlock.gifExpandedBlockStart.gifHTML
<HTML> 
<HEAD> 
<title>Ajax实现无刷新三联动下拉框</title> 
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> 
<meta content="C#" name="CODE_LANGUAGE"> 
<meta content="JavaScript" name="vs_defaultClientScript"> 
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> 
<SCRIPT language="javascript"> 
//城市------------------------------ 
function cityResult() 

var city=document.getElementById("DropDownList1"); 
AjaxMethod.GetCityList(city.value,get_city_Result_CallBack); 


function get_city_Result_CallBack(response) 

if (response.value != null

//debugger; 
document.all("DropDownList2").length=0;     
     
var ds = response.value; 
if(ds != null && typeof(ds) == "object" && ds.Tables != null

for(var i=0; i<ds.Tables[0].Rows.length; i++
     { 
     
var name=ds.Tables[0].Rows[i].city; 
       
var id=ds.Tables[0].Rows[i].cityID; 
       document.all(
"DropDownList2").options.add(new Option(name,id)); 
     } 


return 

//市区---------------------------------------- 
function areaResult() 

var area=document.getElementById("DropDownList2"); 
AjaxMethod.GetAreaList(area.value,get_area_Result_CallBack); 

function get_area_Result_CallBack(response) 

if (response.value != null

document.all(
"DropDownList3").length=0;     
     
var ds = response.value; 
if(ds != null && typeof(ds) == "object" && ds.Tables != null

for(var i=0; i<ds.Tables[0].Rows.length; i++
     { 
       
var name=ds.Tables[0].Rows[i].area; 
       
var id=ds.Tables[0].Rows[i].areaID; 
       document.all(
"DropDownList3").options.add(new Option(name,id)); 
     } 


return 

function getData() 

var province=document.getElementById("DropDownList1"); 
var pindex = province.selectedIndex; 
var pValue = province.options[pindex].value; 
var pText = province.options[pindex].text; 

var city=document.getElementById("DropDownList2"); 
var cindex = city.selectedIndex; 
var cValue = city.options[cindex].value; 
var cText = city.options[cindex].text; 

var area=document.getElementById("DropDownList3"); 
var aindex = area.selectedIndex; 
var aValue = area.options[aindex].value; 
var aText = area.options[aindex].text; 

var txt=document.getElementById("TextBox1"); 

document.getElementById(
"<%=TextBox1.ClientID%>").innerText="省:"+pValue+"|"+pText+"市:"+cValue+"|"+cText+"区:"+aValue+"|"+aText; 

</SCRIPT> 
</HEAD> 
<body ms_positioning="GridLayout"> 
<form id="Form1" method="post" runat="server"> 
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 96px; POSITION: absolute; TOP: 32px" cellSpacing="1" 
cellPadding
="1" width="300" border="1" bgColor="#ccff66"> 
<TR> 
<TD>省市</TD> 
<TD><asp:dropdownlist id="DropDownList1" runat="server"></asp:dropdownlist></TD> 
</TR> 
<TR> 
<TD>城市</TD> 
<TD><asp:dropdownlist id="DropDownList2" runat="server"></asp:dropdownlist></TD> 
</TR> 
<TR> 
<TD>市区</TD> 
<TD><asp:dropdownlist id="DropDownList3" runat="server"></asp:dropdownlist></TD> 
</TR> 
</TABLE> 
<asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 416px; POSITION: absolute; TOP: 48px" runat="server" 
Width
="424px"></asp:TextBox><INPUT style="Z-INDEX: 103; LEFT: 456px; WIDTH: 56px; POSITION: absolute; TOP: 96px; HEIGHT: 24px" 
type
="button" value="test" onclick="getData();"> 
</form> 
</body> 
</HTML> 
C#
ContractedBlock.gifExpandedBlockStart.gifCode
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
namespace AjaxTest 

/**//// <summary> 
/// Summary description for WebForm1. 
/// </summary> 
public class WebForm1 : System.Web.UI.Page 

protected System.Web.UI.WebControls.DropDownList DropDownList1; 
protected System.Web.UI.WebControls.DropDownList DropDownList2; 
protected System.Web.UI.WebControls.TextBox TextBox1; 
protected System.Web.UI.WebControls.DropDownList DropDownList3; 

private void Page_Load(object sender, System.EventArgs e) 

Ajax.Utility.RegisterTypeForAjax(
typeof(AjaxMethod)); 
if(!Page.IsPostBack) 

this.DropDownList1.DataSource=AjaxMethod.GetProvinceList(); 
this.DropDownList1.DataTextField="province"
this.DropDownList1.DataValueField="provinceID"
this.DropDownList1.DataBind(); 

this.DropDownList1.Attributes.Add("onclick","cityResult();"); 
this.DropDownList2.Attributes.Add("onclick","areaResult();"); 



Web Form Designer generated code
#region Web Form Designer generated code 
override protected void OnInit(EventArgs e) 

// 
// CODEGEN: This call is required by the ASP.NET Web Form Designer. 
// 
InitializeComponent(); 
base.OnInit(e); 


/**//// <summary> 
/// Required method for Designer support - do not modify 
/// the contents of this method with the code editor. 
/// </summary> 
private void InitializeComponent() 

this.Load += new System.EventHandler(this.Page_Load); 


#endregion 



3.AjaxMethod 
using System; 
using System.Data; 
using System.Data.SqlClient; 
namespace AjaxTest 

/**//// <summary> 
/// Summary description for AjaxMethod. 
/// </summary> 
public class AjaxMethod 

GetProvinceList
#region GetProvinceList 
public static DataSet GetProvinceList() 

string sql="select * from province"
return GetDataSet(sql); 

#endregion 

GetCityList
#region GetCityList 
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)] 
public DataSet GetCityList(int provinceid) 

string sql="select * from city where father="+provinceid; 
return GetDataSet(sql); 

#endregion 

GetAreaList
#region GetAreaList 
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)] 
public DataSet GetAreaList(int cityid) 

string sql="select * from area where father="+cityid; 
return GetDataSet(sql); 

#endregion 

GetDataSet
#region GetDataSet 
public static DataSet GetDataSet(string sql) 

string ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; 
SqlDataAdapter sda 
=new SqlDataAdapter(sql,ConnectionString); 
DataSet ds
=new DataSet(); 
sda.Fill(ds); 
return ds; 

#endregion 


转载于:https://www.cnblogs.com/fengzhenxin1984/archive/2009/08/11/1543871.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值