第一次选择的是重庆,效果如图
第二次选的是江苏省,显示效果如上图,但是出现了一个问题,就是之前的数据没有清除。
第三次选的是浙江省,显示效果如上,之前的数据依然在。。。实际应该是选择某个省第二个下拉框显示的是这个省的全部城市。。。。
数据库中有两个表分别为city,promary:city表的字段为cityID、cityName、proID ;
promary表的字段为proID、proName
具体的程序如下,请大家帮忙下,谢谢
1 namespace Province_City 2 { 3 public partial class Form1 : Form 4 { 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void Form1_Load(object sender, EventArgs e) 11 { 12 13 string connStr= ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; 14 15 using (SqlConnection conn = new SqlConnection(connStr)) 16 { 17 conn.Open(); 18 using (SqlCommand cmd = conn.CreateCommand()) 19 { 20 cmd.CommandText = "select * from promary"; 21 using (SqlDataReader dataReader = cmd.ExecuteReader()) 22 { 23 while (dataReader.Read()) 24 { 25 ProvinceItem item = new ProvinceItem(); 26 item.Id = dataReader.GetInt32(dataReader.GetOrdinal("proId")); 27 item.Name = dataReader.GetString(dataReader.GetOrdinal("proName")); 28 comProvince.Items.Add(item); 29 30 } 31 } 32 } 33 } 34 } 35 36 37 38 private void comProvince_SelectedIndexChanged(object sender, EventArgs e) 39 { 40 41 ProvinceItem item = (ProvinceItem)comProvince.SelectedItem; 42 int proID = item.Id; 43 44 45 46 string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString; 47 //using (SqlConnection conn = new SqlConnection(@"Data Source=HP-PC;Initial Catalog=DBPromary;User ID=sa;Password=123")) 48 using (SqlConnection conn = new SqlConnection(connStr)) 49 { 50 conn.Open(); 51 52 using (SqlCommand cmd = conn.CreateCommand()) 53 { 54 cmd.CommandText = "select * from city where proID=@proID"; 55 cmd.Parameters.Add(new SqlParameter("proID", proID)); 56 using (SqlDataReader dataReader = cmd.ExecuteReader()) 57 { 58 while (dataReader.Read()) 59 { 60 string cityName = dataReader.GetString(dataReader.GetOrdinal("cityName")); 61 comCity.Items.Add(cityName); 62 63 } 64 } 65 } 66 } 67 68 } 69 70 class ProvinceItem 71 { 72 public string Name { get; set; } 73 public int Id { get; set; } 74 } 75 76 77 } 78 }
private void comProvince_SelectedIndexChanged(object sender, EventArgs e) {
comCity.Items.Clear();
....
对滴 就是这条语句没有加进去 一开始我也在想clear方法怎么调用的 谢谢您啊,我是菜鸟,希望能多向您讨教讨教~~~~~可以加一下您的Q么,谢谢
@余_xlxl:
没什么,慢慢就会了,我对winform不熟,有问题可以在园子里发消息给我
@向往-SONG: 好滴 谢谢啊,您是做.NET开发的么
@余_xlxl:
嗯,是的。
记不清楚了。重新绑定数据之前使用comProvince.Items.Clear(); 或者
comProvince.DataSource=null; 需要把之前的数据源 清空。
comCity.Items.Clear();
comCity.DataSource=null;
对滴 只需要在private void comProvince_SelectedIndexChanged(object sender, EventArgs e)中加一条
comCity.Items.Clear();就可以了,谢谢您,我学到了清空数据的知识。。。。。我想问一下
comCity.DataSource=null;是什么意思的呢,一般怎么用呢 我是菜鸟,请见谅我这么白痴的问 呵呵呵 谢谢您啊
在填充数据之前,clear一下
在填充数据之前,clear一下
跟那个选择月份一样 得先clear一下 否则一直堆积
楼主把思路理清 出问题debug一下 很好就找到问题出处的
楼上的正解