首先分别做三个下拉列表
<body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"></asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True"></asp:DropDownList> <asp:DropDownList ID="DropDownList3" runat="server"></asp:DropDownList> </form> </body>
建类:China实体类
public China() { } private string code; public string Code { get { return code; } set { code = value; } } private string name; public string Name { get { return name; } set { name = value; } } private string prentcode; public string Prentcode { get { return prentcode; } set { prentcode = value; } }
数据访问类:
public class ChinaData { SqlConnection conn = null; SqlCommand cmd = null; public ChinaData() { conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123"); cmd = conn.CreateCommand(); } public List<China> Select(string pcode) { cmd.CommandText = "select * from ChinaStates where ParentAreaCode=@pcode"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@pcode", pcode); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); List<China> list = new List<China>(); if (dr.HasRows) { while (dr.Read()) { China data = new China(); data.Code = dr[0].ToString(); data.Name = dr[1].ToString(); data.Prentcode = dr[2].ToString(); list.Add(data);
}
}
conn.Close();
return list;
}
}
.cs后台代码
首先数据绑定:
if (!IsPostBack) { //调用方法绑定数据 Bind(DropDownList1,new ChinaStatesData().Select("0001")); Bind(DropDownList2, new ChinaStatesData().Select(DropDownList1.SelectedValue)); Bind(DropDownList3, new ChinaStatesData().Select(DropDownList2.SelectedValue)); } //委托 DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged; DropDownList2.SelectedIndexChanged += DropDownList2_SelectedIndexChanged;
//造方法: private void Bind(DropDownList ddl, List<ChinaStates> list) { ddl.DataSource = list; ddl.DataTextField = "AreaName"; ddl.DataValueField = "AreaCode"; ddl.DataBind(); }
//SelectedIndexChanged事件 void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { Bind(DropDownList2, new ChinaStatesData().Select(DropDownList1.SelectedValue));//填充市 Bind(DropDownList3, new ChinaStatesData().Select(DropDownList2.SelectedValue));//填充区 } void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) { Bind(DropDownList3, new ChinaStatesData().Select(DropDownList2.SelectedValue));//填充区 }
代码部分完成后,将下拉列表的AutoPostBack属性改为true