本帖最后由 李阳_TickTock 于 2012-9-25 12:05 编辑
呵呵呵呵入学考试题,给你参考下,不过一定要自己弄懂,不然入学时候考到这个你就麻烦了
写一个执行sql的方法,返回一个dataset- public DataSet ConnectSQLServer(string sql)
- {
- //设置连接字符串
- string s = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=""d:\documents\visual studio 2012\Projects\entranceExaminations\Test9\mydb.mdf"";Integrated Security=True";
- //连接数据库
- using (SqlConnection conn = new SqlConnection(s))
- {
- conn.Open();
- using (SqlDataAdapter sda = new SqlDataAdapter(sql, conn)) {
- DataSet ds = new DataSet();
- sda.Fill(ds);
- return ds;
- }
- }
- }
复制代码 在窗体初始化的时候(Load事件),下拉框绑定数据源dataset
参考:- //获取并设置省
- string sql = null;
- DataSet ds = null;
- sql = "select id,ShengName from T_Sheng";
- ds = ConnectSQLServer(sql);
- cmbSheng.DataSource = ds.Tables[0];
- cmbSheng.DisplayMember = "ShengName";
- cmbSheng.ValueMember = "id";
复制代码 然后在省下拉框的“SelectedIndexChanged”中,用同样的方法获取市
在市下拉框的“SelectedIndexChanged”事件中,用同样方法获取区号
这里要注意的是,在窗口没有显示完之前,省的“SelectedIndexChanged”在绑定数据的时候就会触发,不做处理,会导致找不到市和区号
所以在窗体的shown()事件中,获取市和区号
同时设置一个flag,判断窗口是不是加载完了,如果加载完了,才触发省下拉框的“SelectedIndexChanged”事件。市下拉框也要做判断
参考:- //判断界面是否完全显示
- int shown = 0;
- private void Test9_Shown(object sender, EventArgs e)
- {
- //界面显示完毕,显示市和区号
- showShi();
- showQuhao();
- shown = 1;
- }
复制代码- //当用户选择省后显示市名字
- private void cmbSheng_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (shown == 1)
- {
- showShi();
- }
- }
复制代码 英语不好,省和市就拼音代替了
数据库可以参考以下格式
一个省表
一个市表
省表有 id,省名
市表有 id,所属的省id,市名,区号
这样的好处是,绑定省下拉框的时候,把省id绑定到ValueMember上,在查找市的时候,可以直接通过 省下拉框.SelectedValue 得到 省id
---------------------------------
其实也可以在初始化的时候只执行一次查询,用join,把所有数据都查处了放在一个ds中,然后再分别读取,我试了下,没有成功,你再试试看吧
|