.net2003+ajax 无刷新区域下拉列表

本文介绍了一个使用ASP.NET和AJAX实现的省份与城市下拉联动选择功能。通过main.aspx页面上的两个下拉列表,用户可以选择省份并自动加载对应的城市选项。此功能涉及main.aspx、callservershen.aspx和callservershi.aspx三个页面的交互,利用AJAX异步获取数据,并通过SQL Server数据库查询省份和城市信息。

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

1创建三张页面main.aspx、callservershen.aspx、callservershi.aspx

在main.aspx页面中放两个下拉列表

<SELECT id="drp1" style="WIDTH: 112px" onchange="LoadShi();">
 <OPTION selected></OPTION>
</SELECT>

<SELECT id="drp2" style="WIDTH: 116px">
 <OPTION selected></OPTION>
</SELECT>

然后写javascript

 

<script>
var xmlhttp=false;
var DrpInfo="";
function GetXmlHttp()
{
  
if(window.ActiveXObject)
   
{
     
try
       
{
     xmlhttp
=new ActiveXObject("Msxml2.XMLHTTP.3.0");
       }

     
catch(e)
       
{
           
try
        
{
          xmlhttp
=new ActiveXObject("Microsoft.XMLHTTP");
        }

      
catch(e)
           
{
        }

       }

   }

   
return xmlhttp;
}


//************************** 窗 体 加 载 ----- 省  ***************************
function LoadShen()
{
  GetXmlHttp();
  
var url="callservershen.aspx";
  xmlhttp.onreadystatechange
=ReadStateShen;
  xmlhttp.open(
"post",url,true);
  xmlhttp.send();
}


function ReadStateShen()
{
  
var drp1=document.getElementById("drp1");
  
if(xmlhttp.readyState==1)
   
{
     DrpInfo
="数据加载中..";
     drp1.options[
0]=new Option(DrpInfo,DrpInfo);
   }

  
if(xmlhttp.reaydState==4)
   
{
     document.getElementById(
"drp1").length=0;
     drp1.options[
0]=new Option("请选择");
     
var msg=xmlhttp.responseText;
     msg
=msg.substring(0,msg.length-1);
     
var msgarray=new Array();
     msgarray
=msg.split(",");
     
for(var i=0;i<msgarray.length;i++)
      
{
        DrpInfo
=msgarray[i];
        drp1.options[drp1.length]
=new Option(DrpInfo,DrpInfo);
      }

   }

}




//************************** 根 据 选 择 的 省 加 载 市 ***************************
function LoadShi()
{
  GetXmlHttp();
  
var drp1=document.getElementById("drp1");
  
var drpInfo=drp1.options[drp1.selectedIndex].text;
  
var url="callservershi.aspx?shi="+escape(drpInfo);
  xmlhttp.onreadystatechange
=ReadStateShi;
  xmlhttp.open(
"post",url,true);
  xmlhttp.send();
}

function ReadStateShi()
{
  
var drp2=document.getElementById("drp2");
  
if(xmlhttp.readyState==1)
   
{
     DrpInfo
="数据加载中..";
     drp2.options[
0]=new Option(DrpInfo);
   }

  
if(xmlhttp.readyState==4)
   
{
     
var msg=xmlhttp.responseText;
     msg
=msg.substring(0,msg.length-1);
     
var msgarray=new Array();
     msgarray
=msg.split(",");
     
for(var i=0;i<msgarray.length;i++)
      
{
        DrpInfo
=msgarray[i];
        drp2.options[drp2.length]
=new Option(DrpInfo,DrpInfo);
      }

   }

}

</script>

 2在callservershen.aspx页面的page_load写如下代码    (注:查出数据中所有省名)

 

SqlConnection conn=new SqlConnection("server=.;database=test;uid=aa;pwd=aa");
private void Page_Load(object sender, System.EventArgs e)
{
    
if(!this.IsPostBack)
    
{
        
this.Bind();
    }

}


private void Bind()
{
    
try
    
{
        
string strSql="select distinct(shen) from city";
        DataSet ds
=new DataSet();
        SqlDataAdapter da
=new SqlDataAdapter(strSql,conn);
        da.Fill(ds,
"dd");
        
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
        
{
            Response.Write(ds.Tables[
0].Rows[i][0].ToString()+",");
        }

        Response.End();
                
    }

    
catch(Exception){}
}

 

3在callservershi.aspx页面的page_load写如下代码     (注:查出数据中所有市名)

 

SqlConnection conn=new SqlConnection("server=.;database=test;uid=aa;pwd=aa");
private void Page_Load(object sender, System.EventArgs e)
{
    
if(!this.IsPostBack)
    
{
        
this.Bind();
    }

}

private void Bind()
{
    
try
    
{
        
string str=Request.QueryString["shi"].ToString();
        
string strSql="select shi from city where shen='"+str+"'";
        DataSet ds
=new DataSet();
        SqlDataAdapter da
=new SqlDataAdapter(strSql,conn);
        da.Fill(ds,
"dd");
        
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
        
{
            Response.Write(ds.Tables[
0].Rows[i][0].ToString()+",");
        }

        Response.End();
                
    }

    
catch(Exception ){}
}
4在main.aspx页面中的<body>标签写onload="LoadShen();"
<body onload="LoadShen();">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值