三级联动下拉菜单的方法

三级联动下拉菜单的方法

写个CS,
AJAX也可以using System;
using System.Data;
using System.Configuration;
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;
using System.Data.SqlClient;
/// <summary>
/// provcityservstat 的摘要说明
/// 这个类主要是用来当省/城市/服务站都是下拉进判断,省和城市教师都是autopostback
/// </summary>
public class provcityservstat
{
public DropDownList prov;
public DropDownList city;
public DropDownList servstat;
public string servstat_id;
public provcityservstat()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//绑定省的下拉
public void dataBindToProv()
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_prov", con);
SqlDataReader sdr = cmd.ExecuteReader();
this.prov.DataSource = sdr;
this.prov.DataTextField = "prov_name";
this.prov.DataValueField = "prov_id";
this.prov.DataBind();
sdr.Close();
con.Close();
}

//绑定城市下拉
public void dataBindToCity()
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_city where city_provid = " + this.prov.SelectedValue, con);
SqlDataReader sdr = cmd.ExecuteReader();
this.city.DataSource = sdr;
this.city.DataTextField = "city_name";
this.city.DataValueField = "city_id";
this.city.DataBind();
sdr.Close();
con.Close();
}

//绑定服务站
public void dataBindToServstat()
{
if (this.city.SelectedValue != "")
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_servstat where servstat_cityid = " + this.city.SelectedValue, con);
SqlDataReader sdr = cmd.ExecuteReader();
this.servstat.DataSource = sdr;
this.servstat.DataTextField = "servstat_name";
this.servstat.DataValueField = "servstat_id";
this.servstat.DataBind();
sdr.Close();
con.Close();
}
else
{
this.servstat.Items.Clear();
}
}

//一般用于新增时省,城市,服务站的下拉
public void dataBindAdd()
{
dataBindToProv();
dataBindToCity();
dataBindToServstat();
}

//当省的下拉发生变化时
public void databinddropdownprov()
{
dataBindToCity();
dataBindToServstat();
}

//下面开始是用于修改的,根据已知的servstat_id得出是哪个服务站,哪个城市,哪个省
public void dataBindMod()
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_servstat,t_city,t_prov where prov_id = city_provid and city_id = servstat_cityid and servstat_id = " + servstat_id, con);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
dataBindModProv(sdr["prov_id"].ToString());
dataBindModCity(sdr["prov_id"].ToString(), sdr["city_id"].ToString());
dataBindModServstat(sdr["city_id"].ToString(), sdr["servstat_id"].ToString());
}
sdr.Close();
con.Close();
}

//绑定到修改时的省
public void dataBindModProv(string prov_id)
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_prov", con);
SqlDataReader sdr = cmd.ExecuteReader();
this.prov.Items.Clear();
int i = 0;
while (sdr.Read())
{
this.prov.Items.Insert(i, new ListItem(sdr["prov_name"].ToString(), sdr["prov_id"].ToString()));
if (prov_id == sdr["prov_id"].ToString())
{
this.prov.Items[i].Selected = true;
}
i++;
}
sdr.Close();
con.Close();
}

//绑定到修改时的城市
public void dataBindModCity(string prov_id, string city_id)
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_city where city_provid = " + prov_id, con);
SqlDataReader sdr = cmd.ExecuteReader();
this.city.Items.Clear();
int i = 0;
while (sdr.Read())
{
this.city.Items.Insert(i, new ListItem(sdr["city_name"].ToString(), sdr["city_id"].ToString()));
if (city_id == sdr["city_id"].ToString())
{
this.city.Items[i].Selected = true;
}
i++;
}
sdr.Close();
con.Close();
}

//绑定到修改时的服务站
public void dataBindModServstat(string city_id, string servstat_id)
{
SqlConnection con = db.createSqlConneciton();
con.Open();
SqlCommand cmd = new SqlCommand("select * from t_servstat where servstat_cityid = " + city_id, con);
SqlDataReader sdr = cmd.ExecuteReader();
this.servstat.Items.Clear();
int i = 0;
while (sdr.Read())
{
this.servstat.Items.Insert(i, new ListItem(sdr["servstat_name"].ToString(), sdr["servstat_id"].ToString()));
if (servstat_id == sdr["servstat_id"].ToString())
{
this.servstat.Items[i].Selected = true;
}
i++;
}
sdr.Close();
con.Close();
}
}

参考一下我的,我这个是三级的
注意,下拉的autopostback要先上