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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© y494890511 高级黑马   /  2013-11-16 21:58  /  1008 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 y494890511 于 2013-11-18 13:33 编辑
  1. public partial class 省市县联动 : Window
  2. {
  3. public 省市县联动()
  4. {
  5. InitializeComponent();
  6. }

  7. private void Window_Loaded(object sender, RoutedEventArgs e)
  8. {
  9. DataTable table = SqlHelper.ExecuteDataTable("select * from Data_Province");
  10. List<Area> list = new List<Area>();
  11. foreach(DataRow row in table.Rows)
  12. {
  13. Area area=new Area();
  14. area.Id=(string)row["ProvinceCode"];
  15. area.Name=(string)row["ProvinceName"];
  16. list.Add(area);
  17. }
  18. lbProv.ItemsSource=list;
  19. }

  20. private void lbProv_SelectionChanged(object sender, SelectionChangedEventArgs e)
  21. {
  22. Area area=(Area)lbProv.SelectedItem;
  23. DataTable table=SqlHelper.ExecuteDataTable("select * from Data_City where ProvinceCode=@prov ",
  24. new SqlParameter("@prov",area.Id));
  25. List<Area> list=new List<Area>();
  26. foreach (DataRow row in table.Rows)
  27. {
  28. Area city=new Area();
  29. city.Id=(string)row["CityCode"];
  30. city.Name=(string)row["CityName"];
  31. list.Add(city);
  32. }
  33. lbCity.ItemsSource = list;
  34. }

  35. private void lbCity_SelectionChanged(object sender, SelectionChangedEventArgs e)
  36. {
  37. Area area = (Area)lbCity.SelectedItem;
  38. DataTable table = SqlHelper.ExecuteDataTable("select * from Data_County where CityCode=@city",
  39. new SqlParameter("@city",area.Id));
  40. List<Area> list = new List<Area>();
  41. foreach (DataRow row in table.Rows)
  42. {
  43. Area county = new Area();
  44. county.Id = (string)row["CountyCode"];
  45. county.Name = (string)row["CountyName"];
  46. list.Add(county);
  47. }
  48. lbCounty.ItemsSource = list;
  49. }
  50. }
  51. }
复制代码
Area类
  1. class Area
  2. {
  3. public string Id { get; set; }
  4. public string Name { get; set; }
  5. }
复制代码
1.窗体加载时在lbProv列表框显示省份,当lbProv_SelectionChanged事件触发是在lbCity列表框显示市,
当lbCity_SelectionChanged事件触发是在lbCounty显示县
2.当选择一个省份后在选择一个市,接着在选择一个省份,结果出错.
当再次选择一个省份时触发lbProv_SelectionChanged事件,该省包含的所有市改变触发lbCity_SelectionChanged事件结果出错.
3.请问怎么解决?



更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 Sayme 于 2013-11-17 22:50 编辑

你需要做一个判断

我记不大清楚了 当初我就遇到了这个问题

是因为获取的值是空值造成的

你需要再每次 选择变动的事件里面做一个判断

判断当前获取的值是否为空...不是空的时候再执行联动的数据库查询与数据绑定

哦 我想起来了

当你反回再次点击省之后   市的 选择变更 事件选择条目的值为空 导致数据查询还是绑定出错

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
OK解决了加一个判断,判断选择项是否为空.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马