背景:
在学习ASP.net的时候讲到一个控件—DropDownList(表示允许用户从下拉框中选择一项的控件)。视屏中是中国省,市的级联,不过只是一小部分。自己脑子一热,索性把中国所有的省、市、县的全做了,以后用着方便。
步骤:
1、准备数据库
把中国所有的省、市、县录入数据库。当然自己没有那么勤快了,我是从网上下载的。下载:点我! 访问密码 b48f
2、设置控件
在web窗体上拖拉三个DropDownList,并把放置省和市 的DropDownList控件的AutoPostBack 设置成True。
3、编写代码
/* ==============================
*
* Author: 殷伟涛
* Time:2015/7/20 9:53:55
* FileName:DB
* ProjectName:$projectname$
* ===============================
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient ;
namespace 中国省市县级联
{
public class DB
{
public static SqlConnection createConnection()
{
SqlConnection db = new SqlConnection("server=.;database=Chain;uid=sa;pwd=123456;");
return db;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace 中国省市县级联
{
public partial class China : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
//绑定省
SqlConnection con = DB.createConnection();
con.Open();
SqlCommand cmdProvince = new SqlCommand("select * from S_Province", con);
SqlDataReader sdrone = cmdProvince.ExecuteReader();
this.ddlProvince.DataSource = sdrone;
this.ddlProvince.DataTextField = "ProvinceName";
this.ddlProvince.DataValueField = "ProvinceID";
this.ddlProvince.DataBind();
sdrone.Close();
//绑定市
SqlCommand cmdcity = new SqlCommand("select * from S_City where ProvinceID =" + this.ddlProvince.SelectedValue, con);
SqlDataReader sdrtwo = cmdcity.ExecuteReader();
this.ddlCity.DataSource = sdrtwo;
this.ddlCity.DataTextField = "CityName";
this.ddlCity.DataValueField = "CityID";
this.ddlCity.DataBind();
sdrtwo.Close();
//绑定县
SqlCommand cmdDistrict = new SqlCommand("select * from S_District where CityID=" + this.ddlCity.SelectedValue, con);
SqlDataReader sdrthree = cmdDistrict.ExecuteReader();
this.ddlDistrict.DataSource = sdrthree;
this.ddlDistrict.DataTextField = "DistrictName";
this.ddlDistrict.DataValueField = "DistrictID";
this.ddlDistrict.DataBind();
sdrthree.Close();
}
}
/// <summary>
/// 对ddlProvince 的操作时时更新数据库,ddlCtiy 也跟着更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = DB.createConnection();
con.Open();
SqlCommand cmdcity = new SqlCommand("select * from S_City where ProvinceID =" + this.ddlProvince.SelectedValue, con);
SqlDataReader sdrtwo = cmdcity.ExecuteReader();
this.ddlCity.DataSource = sdrtwo;
this.ddlCity.DataTextField = "CityName";
this.ddlCity.DataValueField = "CityID";
this.ddlCity.DataBind();
sdrtwo.Close();
}
/// <summary>
/// 对ddlCity 的操作时时更新数据库,ddlDistrict 也跟着更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = DB.createConnection();
con.Open();
SqlCommand cmdDistrict = new SqlCommand("select * from S_District where CityID=" + this.ddlCity.SelectedValue, con);
SqlDataReader sdrthree = cmdDistrict.ExecuteReader();
this.ddlDistrict.DataSource = sdrthree;
this.ddlDistrict.DataTextField = "DistrictName";
this.ddlDistrict.DataValueField = "DistrictID";
this.ddlDistrict.DataBind();
sdrthree.Close();
}
}
}
总结:在看牛腩新闻发布系统时候,发现马老师把一些常有的技术都写在博客中用的时候直接找博客,非常省事啊!所以像老师学习,提高自己的工作效率!