Kopiowanie DataTable Row do Datagrida C#

0

Witam.
W jaki sposób można skopiować jeden wiersz z Data Table i dodać go do datagrida?
Na pewno coś pokroju:

forach(DataRows wiersz in tablica.rows)
{

}
 

Stworzenie nowego wiersza w DataGridzie to:

DataGridViewRow drow = new DataGridViewRow() 

Pomyślałem, że warto by zrobić to tak:

  DataGridViewRow drow = new DataGridViewRow();
                        foreach (DataRow wiersz in dTable2.Rows)
                            {
                                for (int i = 0; i <= ilosckolumn - 1; i++)
                                {
                                    drow.Cells[i].Value = wiersz[i].ToString();
                                }
                            }

Problem jest jednak w tym, że otrzymałem błąd:

Indeks jest spoza zakresu. Musi mieć wartość nieujemną i mniejszą niż rozmiar kolekcji. Nazwa parametru: index
na linijce
drow.Cells[i].Value = wiersz[i].ToString();
co jak rozumiem wynika z braku kolumn, z których powinien sie składać mój drow. Jednak przeszukując googla i msdn niestety nie znalazłem nic pożytecznego co pozwoliłoby rozwiązać mój problem. Mogę prosić o pomoc?

Pozdrawiam.

0

Kolumny dla DataGridView robi się chyba metodą CreateCells, a jedna z jej przeciążonych metod pozwala od razu na podanie wartości, więc chyba nawet z tej dziwnej pętli z dziwnym warunkiem stopu da radę zrezygnować.

0

Dziękuję za odpowiedź.
Jednak problemem dla mnie jest dalej przeniesienie zawartości wiersza datatable. Mając wiele datatable potrzebuję np. dodawać je kolejno do datagrida.
Uporałem sie z tym tak:

foreach (DataRow wiersz in dTable2.Rows)
                            {
                                int index = dataGridView1.Rows.Add();
                                label1.Text += index.ToString();
                                for (int j = 0; j < dTable2.Columns.Count; j++)
                                    {
                                        dataGridView1[j, index].Value = wiersz[j];
                                    }
                             } 

Tylko, że przy dodawaniu wielu wierszy pojawia sie error:

A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

I dodany jest prawidłowo tylko ostatni wiersz. Indexy zmieniają sie tak jak powinny. Cała pierwsza kolumna to same zera (a powinny być godziny w formacie string) a tylko ostatnia jest dobrze.

0

naprawdę potrzebujesz skopiować?
nie lepiej ustawić dgv.DataSource=dataTable?

jeśli jednak musisz i chcesz to zrobić tak jak napisałeś to musisz zadbać o to żeby grid miał tyle kolumn dodanych co ma datatable.
to po pierwsze

1 użytkowników online, w tym zalogowanych: 0, gości: 1