A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董蒙蒙 中级黑马   /  2012-9-25 11:41  /  2162 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用WinForm或者ASP.Net编写一个区号查询界面,用户在“所在省(自治区、直辖市)”中选择省,随着省选择的变化,“所在地市”的下拉列表中则显示所选省下面的所有市,用户选择一个市的时候,则在“区号”中显示所选择市的区号(省市数据要自己建数据库,然后从数据库中读取)
请问,这个题目如何实现区号与地市的对应呢?这个数据表应该怎样建立?

6 个回复

倒序浏览
两张表啊,对应着就行。
比如省份的表里面有省份名称、省份编号
城市的表里面有市名称,市编号、和对应的省份编号,
选的时候在城市表里按条件筛选出省份编号等于选择的省份的编号所有项就行了吧
回复 使用道具 举报
本帖最后由 李阳_TickTock 于 2012-9-25 12:05 编辑

呵呵呵呵入学考试题,给你参考下,不过一定要自己弄懂,不然入学时候考到这个你就麻烦了

写一个执行sql的方法,返回一个dataset
  1. public DataSet ConnectSQLServer(string sql)
  2.         {
  3.             //设置连接字符串
  4.             string s = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=""d:\documents\visual studio 2012\Projects\entranceExaminations\Test9\mydb.mdf"";Integrated Security=True";
  5.             //连接数据库
  6.             using (SqlConnection conn = new SqlConnection(s))
  7.             {
  8.                 conn.Open();
  9.                 using (SqlDataAdapter sda = new SqlDataAdapter(sql, conn)) {
  10.                     DataSet ds = new DataSet();
  11.                     sda.Fill(ds);
  12.                     return ds;
  13.                 }
  14.             }
  15.         }
复制代码
在窗体初始化的时候(Load事件),下拉框绑定数据源dataset
参考:
  1. //获取并设置省
  2.             string sql = null;
  3.             DataSet ds = null;
  4.             sql = "select id,ShengName from T_Sheng";
  5.             ds = ConnectSQLServer(sql);
  6.             cmbSheng.DataSource = ds.Tables[0];
  7.             cmbSheng.DisplayMember = "ShengName";
  8.             cmbSheng.ValueMember = "id";
复制代码
然后在省下拉框的“SelectedIndexChanged”中,用同样的方法获取市
在市下拉框的“SelectedIndexChanged”事件中,用同样方法获取区号

这里要注意的是,在窗口没有显示完之前,省的“SelectedIndexChanged”在绑定数据的时候就会触发,不做处理,会导致找不到市和区号

所以在窗体的shown()事件中,获取市和区号

同时设置一个flag,判断窗口是不是加载完了,如果加载完了,才触发省下拉框的“SelectedIndexChanged”事件。市下拉框也要做判断
参考:
  1. //判断界面是否完全显示
  2.         int shown = 0;
  3.         private void Test9_Shown(object sender, EventArgs e)
  4.         {
  5.             //界面显示完毕,显示市和区号
  6.             showShi();
  7.             showQuhao();
  8.             shown = 1;
  9.         }
复制代码
  1. //当用户选择省后显示市名字
  2.         private void cmbSheng_SelectedIndexChanged(object sender, EventArgs e)
  3.         {
  4.             if (shown == 1)
  5.             {
  6.                 showShi();
  7.             }

  8.         }
复制代码
英语不好,省和市就拼音代替了

数据库可以参考以下格式

一个省表
一个市表

省表有 id,省名
市表有 id,所属的省id,市名,区号

这样的好处是,绑定省下拉框的时候,把省id绑定到ValueMember上,在查找市的时候,可以直接通过 省下拉框.SelectedValue  得到 省id


---------------------------------
其实也可以在初始化的时候只执行一次查询,用join,把所有数据都查处了放在一个ds中,然后再分别读取,我试了下,没有成功,你再试试看吧



回复 使用道具 举报
李后量 发表于 2012-9-25 11:59
两张表啊,对应着就行。
比如省份的表里面有省份名称、省份编号
城市的表里面有市名称,市编号、和对应的省 ...

我是想问下,后面的 区号 跟 地市 如何实现对应?
回复 使用道具 举报
李阳_TickTock 发表于 2012-9-25 12:02
呵呵呵呵入学考试题,给你参考下,不过一定要自己弄懂,不然入学时候考到这个你就麻烦了

写一个执行sql的 ...

谢谢!后面的写不出了。。。:(
回复 使用道具 举报
董蒙蒙 发表于 2012-9-25 12:02
我是想问下,后面的 区号 跟 地市 如何实现对应?

在后面加一个区号字段啊,然后获取这个字段
回复 使用道具 举报
董蒙蒙 发表于 2012-9-25 12:06
谢谢!后面的写不出了。。。

来,把这两套视频看看,就不纠结了,反正时间有三天

SQL入门:
http://dl.vmall.com/c0gnwqx59o

ADO.NET入门:
http://dl.vmall.com/c0l8vz0h1e
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马