Merhaba,
Birçok sitede aradığım ama bir türlü bulamadığım bir konu vardı. DataReader kullanarak ama bilgisayarımın belleğini de yormadan DataReaderı DataGridView’a nasıl bağlayabilirdim? Birçok yerde bunun yapılamayacağı, bazı yerlerde ise soruyda açıkça belirtilmesine rağmen yine de DataTable’lı çözüm gösteriliyordu. Tabiki birçok durumda DataTable’lı özüm idealdir, ancak bazı durumlarda(büyük data çekilmesi gereken durumlar gibi) DataReader’ı doğrudan gride bağlamak daha performanslı olmaktadır. İşte benim çözümüm:
SqlCommand cmd = new SqlCommand(); //other connection stuff SqlDataReader dr = cmd.ExecuteReader(); int columnCount = dr.FieldCount; object[] columns = new object[columnCount]; //önce başlıklar(first, we get the headers) for (int i = 0; i < columnCount-1; i++) { this.dataGridView1.Columns.Add(dr.GetName(i), dr.GetName(i)); } //şimdi satırlar(now, time to get rows) while (dr.Read()) { for (int i = 0; i < columnCount-1; i++) { columns[i] = dr.GetValue(i); } this.dataGridView1.Rows.Add(columns); }