省市县三级联动(第二种方法)

来源:互联网 发布:网络与信息安全ppt 编辑:程序博客网 时间:2024/04/29 00:54

       以下为省市县的数据表,如图所示,图中只是数据表的一部分,要完成省市县三级联动。首先在数据库中建立好下面的数据表:

   

 在程序的前台加上三个下拉文本框,分别为省市县,如图所示:

namespace ThreeClass
{
    public partial class Demo1 : System.Web.UI.Page
    {
        string connstr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
        protected void Page_Load(object sender, EventArgs e)
        {
           if(!IsPostBack)
           {
               DataBd();
           }
        }
        private void DataBd()////这一部分是写的关于省份的部分
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM province";
                    DataSet dt = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dt);
                    cmd.ExecuteNonQuery();
                    for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
                    {
                        string name = dt.Tables[0].Rows[i]["province"].ToString();
                        string id = dt.Tables[0].Rows[i]["provinceID"].ToString();
                        ListItem list = new ListItem(name, id);
                        ddlprovince.Items.Add(list);
                    }
                }
            }
        }

//////开始选择市

        protected void ddlprovince_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlcity.Items.Clear();////每次加载前清空一下
            int pid = Convert.ToInt32(ddlprovince.SelectedValue);////吧省份的下拉文本框中选中的值传给市
            
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM city WHERE father=@father";
                    cmd.Parameters.AddWithValue("@father",pid);
                    DataSet dt = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dt);
                    cmd.ExecuteNonQuery();
                    for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
                    {
                        string name = dt.Tables[0].Rows[i]["city"].ToString();
                        string id = dt.Tables[0].Rows[i]["cityId"].ToString();
                        ListItem list = new ListItem(name, id);
                        ddlcity.Items.Add(list);
                    }
                }
            }
        }

///////开始选择县

        protected void ddlcity_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlarea.Items.Clear();
            int pid = Convert.ToInt32(ddlcity.SelectedValue);
          
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM area WHERE father=@area";
                    cmd.Parameters.AddWithValue("@area", pid);
                    DataSet dt = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dt);
                    cmd.ExecuteNonQuery();
                    for (int i = 0; i < dt.Tables[0].Rows.Count; i++)
                    {
                        string name = dt.Tables[0].Rows[i]["area"].ToString();
                        ListItem list = new ListItem(name);
                        ddlarea.Items.Add(list);
                    }
                }
            }
        }
    }
}

程序运行结果如下:

    还有一种简单的方法,但是我还没弄出来,弄到市,县老是不出,有待继续。

原创粉丝点击