DataGridView数据绑定

本文介绍如何将SqlDataReader与DataGridView控件结合,通过将SqlDataReader读取的数据存储到List集合中,实现数据绑定。推荐使用List而非dataset或datatable,因为List具有强类型特性。以查询tblperson表数据为例,展示了使用Person类创建List对象进行数据绑定的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DataGridView是一个数据绑定控件.现在说下DataGridView和SqlDataReader相结合的用法....

        因为SqlDataReader是一条一条的读取数据的,不能直接把read()到的一条结果放到DataGridView中,所以就需要把read到的所有结果放到一个集合中.比如dataset ,datatable,list等.这里推荐使用list.因为dataset和datatable都是弱类型的,而list集合相对是强类型的.

        用类做List的参数是比较合适的

例子(查询tblperson表中的数据):

申明类Person

 

class Person
    {
        //数据绑定的时候只绑定属性,不绑定字段
        public int autoId { get; set; }
        public string  uname { get; set; }
        public int uage { get; set; }
        public int uheight { get; set; }
    }


 

 private void button1_Click(object sender, EventArgs e)
        {
            List<Person> list=new List<Person>();
            string connstr = "data source=.;initial catalog=itcast2013;integrated security=true";
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                string sqlstr = "select * from tblperson";
                using (SqlCommand comd = new SqlCommand(sqlstr, conn))
                {
                    conn.Open();
                    using (SqlDataReader rd = comd.ExecuteReader())
                    {
                        if (rd.HasRows)
                        {
                            while (rd.Read())
                            {
                                //先把表中数据存数到"集合".-->放到list<>中
                                Person model = new Person();
 
                                 //创建一个Person类来存放每条数据    注意:在创建Person类的时候一定要把每列都申明成属性而不是字段..因为在数据绑定的时候只绑属性,不绑字段
                                model.autoId = rd.GetInt32(0);
                                model.uname = rd.IsDBNull(1) ? "" :rd.GetString(1);
                                model.uage = rd.IsDBNull(2) ?-1 :rd.GetInt32(2);
                                 //在使用Getxxx来获取列数据的时候不能有空值.所以要通过isdbnull来进行一个判断(三元表达式)
                                model.uheight = rd.IsDBNull(3) ? -1 :rd.GetInt32(3);
                                list.Add(model);
                                //将Person类的一个对象model传给list集合
                            }
                        }
                    }
                }
            }
            this.dataGridView1.DataSource = list;
        }


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值