zoukankan      html  css  js  c++  java
  • (9)C#之ADO.NET 两个ListBox联动案例

    这次的案例是做两个ListBox的联动,例如第一个ListBox显示的是全国各省份的名称,然后在用户点击某一个省份的同时,第二个ListBox显示出该省份的各城市的名字。

    ①这需要在数据库中创建一张表格,来保存这些省份以及城市的信息,表格如图:

      

    ②然后利用Insert语句插入数据,这些Insert语句都以及提前准备好了的,只需“新建查询”,然后在执行就好了,如图:

    ③我们在该项目再创建一个类,用来保存Area的各属性:

        class Area
        {
            public int AreaId { get; set; }
            public int AreaPid { get; set; }
            public string AreaName { get; set; }
        }

    ④成功插入之后,我们先写第一个ListBox的代码,这个代码是在窗口加载时候就自动完成的,所以我们写在Window_Loaded事件中:

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                DataTable dt = SqlHelper.ExecuteDataTable("select * from AreaFull where AreaPid = 0");
                
                List<Area> list = new List<Area>();
                
                foreach (DataRow dr in dt.Rows)
                {
                    Area area = new Area();//因为对象是引用类型,这个对象一定要放到foreach循环里面来申请,才不会造成重复出错,相当于重置对该对象
                    area.AreaPid= (int)dr["AreaPid"];
                    area.AreaName=(string)dr["AreaName"];
                    area.AreaId = (int)dr["AreaId"];
                    list.Add(area);
                }
                listBox1.ItemsSource = list;
            }

    ◇注意:这里很关键的一步,在实例化area类的过程时,一定要在foreach中实例化,这样才不会造成重复显示的错误,因为对象是引用类型。

    ◇ListBox的ItemsSource的属性是用来确定绑定的数据源的,我们这里利用的是集合类List来存储数据源,然后通过ItemsSource属性绑定到ListBox上。

    ◇然后一定要在listbox的xaml代码中加上DisplayMemberPath="AreaName",这样才会显示出数据。

    ⑤完成了第一个ListBox,第二个ListBox也就照葫芦画瓢了,只不过第二个ListBox的代码是在我们选择第一个代码的某项时候触发的,所以我们代码将会写在listBox1_SelectionChanged的事件中:、

    private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                Area area = (Area)listBox1.SelectedItem;
                DataTable dt = SqlHelper.ExecuteDataTable("select * from AreaFull where AreaPid = @Areaid",
                    new SqlParameter("@Areaid", area.AreaId));
                List<Area> listCity = new List<Area>();
                foreach (DataRow dr in dt.Rows)
                {
                    Area areaCity = new Area();//此处同上原理
                    areaCity.AreaPid = (int)dr["AreaPid"];
                    areaCity.AreaName = (string)dr["AreaName"];
                    listCity.Add(areaCity);
                }
                listBox2.ItemsSource = listCity;
            }

    ◇完了之后也别忘记添加DisplayMemberPath="AreaName"。

    这样就OK啦,快试试吧~

  • 相关阅读:
    NSArray的枚举使用方法
    NSArray的创建(一)
    关于Description的一些理解
    NSString的形式--可变字符串--改方法Alter
    iOS音频流播放、后台播放、远程控制、锁屏封面等总结
    10个重要的算法C语言实现源代码
    OC方法积累
    UIDevice获取设备数据以及如何获取应用信息
    iOS如何取得APP的版本信息跟Apple服务器对比进行升级提示?
    新浪微博-开发过程
  • 原文地址:https://www.cnblogs.com/kaolalovemiaomiao/p/4708184.html
Copyright © 2011-2022 走看看