以下为省市县的数据表,如图所示,图中只是数据表的一部分,要完成省市县三级联动。首先在数据库中建立好下面的数据表:
在程序的前台加上三个下拉文本框,分别为省市县,如图所示:
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);
}
}
}
}
}
}
程序运行结果如下:
还有一种简单的方法,但是我还没弄出来,弄到市,县老是不出,有待继续。