Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > как заполнить dataGridView из DataTable


Автор: Swatch 16.2.2015, 15:05
Добрый день.

Есть на форме dataGridView с 6 полями, одно из которых невидимое.

Есть таблица в БД, в которой хранится информация. 

Как проставить соответствие столбцов в dataGridView столбцам, получаемым из БД в DataTable?

Написала так:
Код

//заполняю таблицу данными из БД
            DataTable dat_tbl = GetInfoList();
            dataGridView1.DataSource = dat_tbl;
            for (int idx = 0; idx < dat_tbl.Rows.Count; idx++)
            {
                dataGridView1[0, idx].Value = dat_tbl.Rows[idx]["COL1"];
                dataGridView1[1, idx].Value = dat_tbl.Rows[idx]["ID"];
                dataGridView1[2, idx].Value = dat_tbl.Rows[idx]["COL2"];
                dataGridView1[3, idx].Value = dat_tbl.Rows[idx]["COL3"];
                dataGridView1[4, idx].Value = dat_tbl.Rows[idx]["COL4"];
                dataGridView1[5, idx].Value = dat_tbl.Rows[idx]["COL5"];


            }


При такой реализации получаются сначала красивые столбцы, как я хочу, а после них вставляются еще раз все 6 столбцов из БД с именами столбцов из БД.

Если убрать строку 
Код
dataGridView1.DataSource = dat_tbl;
, то вообще ругается сразу на строке 
Код
dataGridView1[0, idx].Value = dat_tbl.Rows[idx]["COL1"];
 ArfumentOutOfRangeException.

Подскажите, пожалуйста, как красиво установить соответствие столбцов БД и dataGridView?

Автор: Nebel 20.2.2015, 07:00

Если Вы устанавливаете источник данных в сетку

Код

dataGridView1.DataSource = dat_tbl;


то последующий цикл по ручному добавлению строк излишен, потому что сетка заполняется данными таблицы. После этого можно выбрать некоторые столбцы сетки и сделать их невидимыми.
Можно руками добавлять строки в сетку, но тогда источник данных указывать не нужно.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/kak-zapolnit-dataGridView-iz-DataTable-id54e1dd2aae2015de318b4567#findElement_E7045_54e6b14aae2015d064f247f4_0

Автор: expale 22.2.2015, 23:06
Модератор: Сообщение скрыто.

Автор: Swatch 27.2.2015, 09:09
А если мне надо именно ручное добавление, чтобы однозначно определить, где и какой столбец... что сделать?

Автор: sgrey 27.2.2015, 22:00
Не присваивать datasource и оставить цикл...
Цитата(Swatch @ 16.2.2015,  15:05)

Если убрать строку 
Код
dataGridView1.DataSource = dat_tbl;
, то вообще ругается сразу на строке 
Код
dataGridView1[0, idx].Value = dat_tbl.Rows[idx]["COL1"];
 ArfumentOutOfRangeException.

Подскажите, пожалуйста, как красиво установить соответствие столбцов БД и dataGridView?

ругается потому что таблица пустая. Перед тем как присваивать строкам значение, их нужно добавить
в https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx примеров много 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)