Динамическое отображение строк

#c# #datagridview #datatable #datarow

#c# #datagridview #доступ к данным #поток данных

Вопрос:

я хочу показать все записи, которые есть в базе данных ms access, но она отображает только одну запись… У меня есть следующий код

 private void Form1_Load(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection();
        con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\mayur patil\My Documents\Dairy_db\tblCompany.mdb";
        con.Open();
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataSet ds = new DataSet();
        string sql = "SELECT * From tblCompany";

        da = new System.Data.OleDb.OleDbDataAdapter(sql, con);
        da.Fill(ds);
        DataRow dr = ds.Tables[0].Rows[0];
        int cnt = ds.Tables[0].Rows.Count;
        textBox1.Text = cnt.ToString();
        for (int i = 0; i < cnt; i  )
        {
            dataGridView1.Rows[i].Cells[0].Value = dr.ItemArray.GetValue(1).ToString();
            dataGridView1.Rows[i].Cells[1].Value = dr.ItemArray.GetValue(2).ToString();
        }


    }
  

как я могу отобразить все записи из базы данных ms access в моем DataGridView?

Ответ №1:

 dataGridView1.Rows.Add(cnt);
for (int i = 0; i < cnt; i  )
{
    DataRow row = ds.Tables[0].Rows[i];
    dataGridView1.Rows[i].Cells[0].Value = row.ItemArray.GetValue(0).ToString();
    dataGridView1.Rows[i].Cells[1].Value = row.ItemArray.GetValue(1).ToString();
}
  

Комментарии:

1. @Stecya;- выдает ошибку о том, что «Было обработано исключение ArgumentsOutOfRangeException» ….:(

2. В вашем DataGridView может не хватить строк или ячеек

3. в моем datagridview есть две ячейки и 1 строка, НО в моей базе данных есть 4 строки, которые я хочу отобразить в моем datagridview ….: (

4. Чтобы отобразить все строки, dataGridView1 должен содержать эти 4 строки. Использовать dataGridView1.Rows.Add(cnt)

5. где я должен настроить «dataGridView1.Rows.Add (cnt)»?

Ответ №2:

Если вы хотите получить прямой доступ к строкам и столбцам в gridview, вы должны их создать

  dataGridView1.Columns.Add("c1", "c1");
 dataGridView1.Columns.Add("c2", "c2");
 dataGridView1.Rows.Add(10);
  

добавит 10 пустых строк с 2 столбцами в сетке, затем вы сможете заполнить их значениями.

В качестве альтернативы вы можете привязать свой набор данных к элементу управления

  dataGridView1.DataSource = ds.Tables[0]
  

отобразит вашу таблицу с автоматически сгенерированными столбцами без необходимости настройки gridview.

Комментарии:

1. у меня есть строки в моей базе данных, и я не хочу отображать их в моем datagridview, каким образом?

2. В вашем коде у вас уже есть все строки, загруженные в ваш dataset. Все, что вам нужно сделать, это установить свойство datasource gridview для таблицы в вашем наборе данных. Элемент управления gridview должен обрабатывать это автоматически, если нет, проверьте, установлено ли для свойства AutoGenerateColumns gridview значение true.