Как вывести данные в обычной таблице.
Содержание
- Создание болванки приложения
- Размещаем компоненты
- Заполняем таблицу
- Второй способ
- Второй способ с циклом
Создание болванки приложения
Подготовьте приложение с готовой формой.
Подготовьте приложение с готовой формой. Прочитать об этом можно тут: Visual Studio 2017, Visual Studio 2015, Visual Studio 2010.
Размещаем компоненты
Разместите на приложении кнопку.
И размещаем компонент таблицы DataGridView. О компоненте можно почитать тут.
Растянул компонент.
Заполняем таблицу
При клике на кнопку должна добавиться таблица. Для этого дважды кликаем по кнопке и вводим код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//Очистка строк и столбцов таблицы dataGridView1->Rows->Clear(); dataGridView1->Columns->Clear(); //Создание столбцов DataGridViewTextBoxColumn ^firstColumn = gcnew DataGridViewTextBoxColumn(); firstColumn->HeaderText = "№"; firstColumn->Name = "№"; DataGridViewTextBoxColumn ^secondColumn = gcnew DataGridViewTextBoxColumn(); secondColumn->HeaderText = "Имя"; secondColumn->Name = "Имя"; DataGridViewCheckBoxColumn ^thirdColumn = gcnew DataGridViewCheckBoxColumn(); thirdColumn->Name = "Наличие велосипеда"; thirdColumn->HeaderText = "Наличие велосипеда"; //Добавление столбцов dataGridView1->Columns->Add(firstColumn); dataGridView1->Columns->Add(secondColumn); dataGridView1->Columns->Add(thirdColumn); //Переменнняе для ячеек и строки таблицы DataGridViewCell ^firstCell; DataGridViewCell ^secondCell; DataGridViewCell ^thirdCell; DataGridViewRow ^row; //Создание ячеек для первой строки firstCell = gcnew DataGridViewTextBoxCell(); secondCell = gcnew DataGridViewTextBoxCell(); thirdCell = gcnew DataGridViewCheckBoxCell(); row = gcnew DataGridViewRow(); firstCell->Value = "1"; secondCell->Value = "Ганс"; thirdCell->Value = true; row->Cells->AddRange(firstCell, secondCell, thirdCell); dataGridView1->Rows->Add(row); //Создание ячеек для второй строки firstCell = gcnew DataGridViewTextBoxCell(); secondCell = gcnew DataGridViewTextBoxCell(); thirdCell = gcnew DataGridViewCheckBoxCell(); row = gcnew DataGridViewRow(); firstCell->Value = "2"; secondCell->Value = "Тимофей"; thirdCell->Value = false; row->Cells->AddRange(firstCell, secondCell, thirdCell); dataGridView1->Rows->Add(row); //Создание ячеек для третьей строки firstCell = gcnew DataGridViewTextBoxCell(); secondCell = gcnew DataGridViewTextBoxCell(); thirdCell = gcnew DataGridViewCheckBoxCell(); row = gcnew DataGridViewRow(); firstCell->Value = "3"; secondCell->Value = "Квазимодо"; thirdCell->Value = true; row->Cells->AddRange(firstCell, secondCell, thirdCell); dataGridView1->Rows->Add(row); |
При запуске приложения и нажатии на кнопку получим следующее.
Надеюсь, что очевидно, что создание новой строчки таблицы можно запихать в цикл.
Второй способ
Предыдущий вариант не очень эффективный, так как даже при добавлении трех строк видно, как появляются записи: после добавления каждой новой строчки таблица отрисовывается заново. А представьте что будет, если записей будет куда больше?
Лучше заранее подготовить невидимую таблицу данных DataTable ^table, заполнить ей тем, что нужно. А потом одной строчкой dataGridView1->DataSource = table; отобразить все данные.
Код клика кнопки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
DataTable ^table; //Невидимая таблица данных DataColumn ^column; //Столбец таблицы DataRow ^row; //Строка таблицы //Создаем таблицу данных table = gcnew DataTable(); //Названия столбцов String^ nameFirstColumn = "№"; String^ nameSecondColumn = "Имя"; String^ nameThirdColumn = "Наличие велосипеда"; //Создание и добавление столбцов column = gcnew DataColumn(nameFirstColumn, Int32::typeid); table->Columns->Add(column); column = gcnew DataColumn(nameSecondColumn, String::typeid); table->Columns->Add(column); column = gcnew DataColumn(nameThirdColumn, Boolean::typeid); table->Columns->Add(column); //Заполняем первую строчку таблицы row = table->NewRow(); row[nameFirstColumn] = 1; row[nameSecondColumn] = "Ганс"; row[nameThirdColumn] = true; table->Rows->Add(row); //Заполняем вторую строчку таблицы row = table->NewRow(); row[nameFirstColumn] = 2; row[nameSecondColumn] = "Тимофей"; row[nameThirdColumn] = false; table->Rows->Add(row); //Заполняем третью строчку таблицы row = table->NewRow(); row[nameFirstColumn] = 3; row[nameSecondColumn] = "Квазимодо"; row[nameThirdColumn] = true; table->Rows->Add(row); //Отображаем таблицу в визуальном компоненте dataGridView1->DataSource = table; |
Типы колонок для отображения информации можно посмотреть по ссылке.
Второй способ с циклом
Покажем напоследок, как тот же код будет выглядеть с циклом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
DataTable ^table; //Невидимая таблица данных DataColumn ^column; //Столбец таблицы DataRow ^row; //Строка таблицы //Создаем таблицу данных table = gcnew DataTable(); //Названия столбцов String^ nameFirstColumn = "№"; String^ nameSecondColumn = "Имя"; String^ nameThirdColumn = "Наличие велосипеда"; //Создание и добавление столбцов column = gcnew DataColumn(nameFirstColumn, Int32::typeid); table->Columns->Add(column); column = gcnew DataColumn(nameSecondColumn, String::typeid); table->Columns->Add(column); column = gcnew DataColumn(nameThirdColumn, Boolean::typeid); table->Columns->Add(column); for (int i = 0; i < 100; i++) { //Заполняем строчку таблицы row = table->NewRow(); row[nameFirstColumn] = i; row[nameSecondColumn] = " Имя " + i.ToString(); row[nameThirdColumn] = i % 2 == 0; table->Rows->Add(row); } //Отображаем таблицу в визуальном компоненте dataGridView1->DataSource = table; |