Ejemplo n.º 1
0
        /// <summary>
        /// 选中省份后生成市的下拉表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        // private void cbxCity_SelectedIndexChanged(object sender, EventArgs e)
        private void cbxProvince_SelectedIndexChanged(object sender, EventArgs e)
        {
            //this.cbxProvince.SelectedItem 我们装的可是AreaInfo对象

            AreaInfo provinceAreaInfo = this.cbxProvince.SelectedItem as AreaInfo;

            //注意我们使用的判断语句是provinceAreaInfo ==null
            //当然我们也可以使用provinceAreaInfo !=null,然后在if的大括号中写我们想要执行的代码
            //但是我们为什么不这样呢?是因为我们为了减少代码的嵌套
            if (provinceAreaInfo == null)
            {
                return;
            }

            //下面这些代码和省份的是一样的,除了Sql查询语句不一样
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    conn.Open();
                    cmd.Connection = conn;
                    //根据选择的省份的对象provinceAreaInfo,的AreaPid 查询市
                    cmd.CommandText = string.Format("SELECT [AreaId],[AreaName],[AreaPid]FROM [db_Tome1].[dbo].[AreaFull] WHERE AreaPid={0}", provinceAreaInfo.AreaId);

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        this.cbxCity.Items.Clear();

                        while (reader.Read())
                        {
                            AreaInfo areaInfo = new AreaInfo();
                            //注意,reader["AreaId"]返回的是当前指针指向的行的AreaId列的值
                            areaInfo.AreaId   = int.Parse(reader["AreaId"].ToString());
                            areaInfo.AreaName = reader["AreaName"].ToString();
                            areaInfo.AreaPid  = int.Parse(reader["AreaPid"].ToString());

                            this.cbxCity.Items.Add(areaInfo);
                        } //end while
                    }     //end using reader
                }         //end using cmd
            }             //end using conn

            this.cbxCity.SelectedIndex = 0;//设置下拉表的默认选中项为第1项
        }
Ejemplo n.º 2
0
        public MainFrm()
        {
            InitializeComponent();

            #region 1.加载MainFrm时加载省的下拉列表
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    conn.Open();
                    cmd.Connection = conn;
                    //该sql查询语句是在选择表中的省份
                    cmd.CommandText = @"SELECT [AreaId],[AreaName],[AreaPid]FROM [db_Tome1].[dbo].[AreaFull] WHERE AreaPid=0";

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        // reader.Read()是行指针,第一次执行时指向第一行,当指向最后一行的后一行返回一个False
                        while (reader.Read())
                        {
                            //我们在此处新建一个类,把表中的每一行的数据作为这个类的属性
                            //这样我们就把表中的每一行存储为这个类的一个对象
                            AreaInfo areaInfo = new AreaInfo();
                            //注意,reader["AreaId"]返回的是当前指针指向的行的AreaId列的值
                            areaInfo.AreaId   = int.Parse(reader["AreaId"].ToString());
                            areaInfo.AreaName = reader["AreaName"].ToString();
                            areaInfo.AreaPid  = int.Parse(reader["AreaPid"].ToString());

                            //注意此处我们给cbxProvince.Items添加的是一个 AreaInfo的对象
                            //但是你要知道我们把AreaInfo类中的ToString ()函数重写了,
                            //我们使ToString()返回属性AreaName ,
                            //所以cbxProvince.Items.Add添加后显示的是AreaName
                            this.cbxProvince.Items.Add(areaInfo);
                        } //end while
                    }     //end using reader
                }         //end using cmd
            }             //end using conn

            this.cbxProvince.SelectedIndex = 0;//数据加载结束之后,我设置下拉表的默认选中项为第1项
            #endregion
        }