首页 > 其他 > 详细

递归实现省市级联,动态生成并删除combo

时间:2014-03-05 13:32:16      阅读:643      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 private void Form1_Load(object sender, EventArgs e)
 2         {
 3             //form Load事件时加载第一个combo 即省份的combo
 4             //null代表它没有父级combo, 0代表数据库中他的父级省份为0,即不存在
 5             LoadCombo(null, 0);
 6         }
 7         //combo中下拉菜单值发生变化触发的事件
 8         private void ComBox_SelectedValueChanged(object sender, EventArgs e)
 9         {
10             ComboBox a = (ComboBox)sender;//将触发此事件的对象转换为combo类型
11             for (int i = 0; i < this.Controls.Count; i++)//for循环遍历form所有控件
12             {
13                 if (this.Controls[i] is ComboBox)//判断是否为combobox类型
14                 {
15                     ComboBox item = (ComboBox)this.Controls[i];//转换为combobox对象
16                     if (item.Location.Y > a.Location.Y)//判断触发此事件的combo下是否有combo
17                     {
18                         this.Controls.Remove(item);//如果有从form中删除此combo
19                         i = i - 1;//删除后form的控件个数少了一个,因此计数器也要减一
20                     }
21                 }
22             }
23             TblArea tbla = a.SelectedItem as TblArea;//将选中的item转换为TblArea对象
24             LoadCombo(sender, tbla.AreaId);//继续调用LoadCombo方法
25         }
26         private void LoadCombo(object sender, int num)
27         {
28             string sql = "select * from TblArea where AreaPId = @num";//sql语句
29             //用SqlHelper类调用sql语句并返回 结果
30             SqlDataReader reader = SqlHelper.ExecuteReader(sql, new SqlParameter("@num", num));
31             if (reader.HasRows)
32             {
33                 ComboBox cmb = new ComboBox();
34                 if (sender != null)//sender不为空说明此时form已经有了至少一个combo
35                 {
36                     ComboBox a = (ComboBox)sender;
37                     cmb.Location = new System.Drawing.Point(10, a.Location.Y + 30);
38                 }
39                 else//form中还没有combo,规定其位置
40                 {
41                     cmb.Location = new System.Drawing.Point(10, 10);
42                 }
43                 while (reader.Read())//读取数据
44                 {
45                     TblArea area = new TblArea();
46                     area.AreaId = Convert.ToInt32(reader["AreaId"]);
47                     area.AreaName = reader["AreaName"].ToString();
48                     cmb.Items.Add(area);
49                 }
50                 //设定combo的格式 , Display 和Value的 对应数据源 
51                 cmb.DropDownStyle = ComboBoxStyle.DropDownList;
52                 cmb.DisplayMember = "AreaName";
53                 cmb.ValueMember = "AreaId";
54                 //给每个combo添加一个事件
55                 cmb.SelectedValueChanged += new System.EventHandler(ComBox_SelectedValueChanged);
56                 this.Controls.Add(cmb);
57             }
58         }
bubuko.com,布布扣

递归实现省市级联,动态生成并删除combo,布布扣,bubuko.com

递归实现省市级联,动态生成并删除combo

原文:http://www.cnblogs.com/tooyoung/p/3581012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!