三级联动下拉菜单

时间:2021-08-13 05:38:44

写个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要先上