65.9K
CodeProject 正在变化。 阅读更多。
Home

使用DataReader的DataGridView

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.12/5 (18投票s)

2008 年 9 月 24 日

CPOL
viewsIcon

123820

downloadIcon

1

如何在Win App中填充DataReader的DataGridView

引言

我经常被问到的一个问题是,如何使用 DataReader 填充 dataGridview。 如果你注意 DataReader 的行为,你会发现当你使用 DataReader 读取时,你是逐行读取的,所以你需要循环读取所有记录,如果你想显示所有记录或记录中的任何元素。 另一方面,dataGridview 需要一次性获取所有记录的数据。 因此,解决方案是创建一个中心存储,通过创建一个包含属性的类,并在读取每条记录的值时为每个属性设置值,并将创建的类的每个对象存储在 ArrayList 中。 这样,ArrayList 将代表你的存储。

Using the Code

步骤 1:创建一个包含属性的类

public class MyDetails
    {
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
           } 
        }

步骤 2:创建一个 ArrayList 来表示你的存储

ArrayList sequence = new ArrayList();

步骤 3:当你检索数据时,执行以下操作

 while (reader.Read())
                {
                    MyDetails m = new MyDetails();
                    m.Id = (int)reader[0];
                    m.Name = reader[1].ToString();
                    m.Age = (int)reader[2];
                    sequence.Add(m);
                }
                dataGridView1.DataSource = sequence;

最终代码

 SqlConnection sqlCon = null;
            try
            {
                sqlCon = new SqlConnection();
                sqlCon.ConnectionString = "Your Connection String";
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = sqlCon;
                cmd.CommandText = "SELECT * FROM StudentInfo";
                sqlCon.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    MyDetails m = new MyDetails();
                    m.Id = (int)reader[0];
                    m.Name = reader[1].ToString();
                    m.Age = (int)reader[2];
                    sequence.Add(m);
                }
                dataGridView1.DataSource = sequence;
            }
            finally
            {
                sqlCon.Close();
            }
© . All rights reserved.