现在很多网站上填写信息的时候都会有地址,选择省之后,市的下拉列表框中就只会出现那个省的市,其他的数据被过滤掉了,这样就变的很人性化,很方便,今天学习的就是城市联动
首先将存储各个省和城市的数据的数据库附加到本地的数据库服务器上,然后在程序中添加链接字符串
string connStr = @"server=.;database=city;uid=sa;pwd=123456";
这样就可以链接到数据库了,可以执行一些查询等其他操作了
下面我们就开始实现城市的联动
在窗体的Load事件中添加下面的代码,这样就可以将数据库中的城市的名称读取到第一个下拉列表框中
SqlConnection conn =new SqlConnection(connStr);//用于打开数据库
using (conn)
{
SqlCommand cmd =new SqlCommand("select name from city where fk=0", conn);//查询数据的Sql语句
using (cmd)
{
if (conn.State ==ConnectionState.Closed)
{
conn.Open();
}
SqlDataReader reader = cmd.ExecuteReader();
using (reader)
{
if (reader.HasRows)
{
while (reader.Read())
{
cbCity.Items.Add(reader.GetString(0));
}
}
}
}
}
以上的代码将城市添加到第一个ComboBox中,然后需要第二个的下拉菜单根据第一个ComboBox中选择的项发生改变,如何实现呢?
通过观察我们不难返现ComboBox的Index与城市的Id号的关系,那么我们就有办法实现城市的联动,代码如下:
int index = cbCity.SelectedIndex + 1;
string sql = @"select name from city where fk=" + index;
SqlConnection conn =new SqlConnection(connStr);
using (conn)
{
SqlCommand cmd =new SqlCommand(sql, conn);
using (cmd)
{
if (conn.State ==ConnectionState.Closed)
{
conn.Open();
}
SqlDataReader reader = cmd.ExecuteReader();
using (reader)
{
if (reader.HasRows)
{
while (reader.Read())
{
cbArea.Items.Add(reader.GetString(0));
}
}
}
}