asp.net下使用AjaxPro实现二级联动代码

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

  <!DOCTYPE html PUBLIC "-//W3C//Dtd XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/Dtd/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml" >

  <head runat="server">

  <title>AjaxPro实现二级联动</title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <table width="200" border="0" align="center" cellpadding="3" cellspacing="1" bordercolor="#FFFFFF" style="border-collapse: collapse">

  <tr align="center">

  <td height="20" colspan="2">

  <strong>AjaxPro实现二级联动</strong> </td>

  </tr>

  <tr class="tdbg" >

  <td width="30%">

  省份</td>

  <td width="70%" align="left">

  <asp:DropDownList ID="ddlStateList" runat="server" DataTextField="StateName" DataValueField="StateId">

  </asp:DropDownList></td>

  </tr>

  <tr class="tdbg" >

  <td><strong>城市</strong></td>

  <td align="left">

  <asp:DropDownList ID="ddlCityList" runat="server">

  </asp:DropDownList></td>

  </tr>

  </table>

  </div>

  <script language="javascript" type="text/javascript" defer="defer">

  function ShowCity(id)

  {

  var res=Test.GetCityList(parseInt(id)).value;

  var ddl=document.getElementById("<%=ddlCityList.UniqueID %>");

  ddl.length=0;

  if(res)

  {

  //res是服务器返回的一个List<City>集合

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

  {

  ddl.options.add(new Option(res[i].CityName,res[i].CityId));

  //从上面可以看出可以直接调用List<City>集合中的元素和它们的属性

  }

  }

  }

  </script>

  </form>

  </body>

  </html>

  <DIV class=cnblogs_Highlighter><PRE class=brush:csharp>using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  using System.Collections.Generic;

  using System.Web;

  using System.Web.Security;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Web.UI.WebControls.WebParts;

  using System.Web.UI.HtmlControls;

  /**

  * 写作说明:本文展示了如何利用AjaxPro与服务器交互,并且还展示了在Js中可以直接调用服务器返回的集合和直接调用服务器上class的属性

  * 作者:周公

  * 日期:2008-1-1

  * 首发地址:http://blog.csdn.net/zhoufoxcn/

  **/

  public partial class Test : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!Page.IsPostBack)

  {

  List<State> stateList = new List<State>(10);

  stateList.Add(new State(0, "选择城市"));//默认选项

  stateList.Add(new State(1,"北京"));

  stateList.Add(new State(2, "天津"));

  stateList.Add(new State(3, "上海"));

  stateList.Add(new State(4, "湖北"));

  stateList.Add(new State(5, "湖南"));

  stateList.Add(new State(6, "山西"));

  ddlStateList.DataSource = stateList;

  ddlStateList.DataBind();

  ddlStateList.Attributes["onchange"] = "ShowCity(this.options[selectedIndex].value)";

  }

  AjaxPro.Utility.RegisterTypeForAjax(typeof(Test));//注册

  }

  [AjaxPro.AjaxMethod]

  public List<City> GetCityList(int stateId)

  {

  //呵呵,都是我熟悉的城市或者区

  List<City> cityList = new List<City>(12);

  cityList.Add(new City(11, "海淀区", 1));

  cityList.Add(new City(12, "朝阳区", 1));

  cityList.Add(new City(13, "大港区", 2));

  cityList.Add(new City(14, "南开区", 2));

  cityList.Add(new City(15, "普陀区", 3));

  cityList.Add(new City(16, "黄浦区", 3));

  cityList.Add(new City(17, "黄冈市", 4));

  cityList.Add(new City(18, "荆州市", 4));

  cityList.Add(new City(19, "长沙市", 5));

  cityList.Add(new City(20, "岳阳市", 5));

  cityList.Add(new City(21, "太原市", 6));

  cityList.Add(new City(22, "大同市", 6));

  List<City> tempList = new List<City>();

  for (int i = 0; i < cityList.Count; i++)

  {

  if (cityList[i].StateId == stateId)

  {

  tempList.Add(cityList[i]);

  }

  }

  return tempList;

  }

  }

  /// <summary>

  /// 省份信息

  /// </summary>

  public class State

  {

  private int stateId;

  private string stateName;

  /// <summary>

  /// 省份名

  /// </summary>

  public string StateName

  {

  get { return stateName; }

  set { stateName = value; }

  }

  /// <summary>

  /// 省份编号

  /// </summary>

  public int StateId

  {

  get { return stateId; }

  set { stateId = value; }

  }

  public State(int stateId, string stateName)

  {

  this.stateId = stateId;

  this.stateName = stateName;

  }

  }

  /// <summary>

  /// 城市信息

  /// </summary>

  public class City

  {

  private int cityId;

  private int stateId;

  private string cityName;

  /// <summary>

  /// 城市名称

  /// </summary>

  public string CityName

  {

  get { return cityName; }

  set { cityName = value; }

  }

  /// <summary>

  /// 城市所在省份编号

  /// </summary>

  public int StateId

  {

  get { return stateId; }

  set { stateId = value; }

  }

  /// <summary>

  /// 城市编号

  /// </summary>

  public int CityId

  {

  get { return cityId; }

  set { cityId = value; }

  }

  public City(int cityId, string cityName, int stateId)

  {

  this.cityId = cityId;

  this.cityName = cityName;

  this.stateId = stateId;

  }

  }

  </PRE>

  </DIV>