Возможно так из базы в dataGridView? - C#
Формулировка задачи:
Здравствуйте!
Интересуюсь возможно ли так сделать?
В базе данных, к примеру, есть таблица "cabinet" с полями 'boxes', 'item', 'options':
boxes________item________options
Box1________Карандаш____ Красный
Box1________Ручка________Parker
Box1________Фломастер____Белый
Box2________Тетрадь______96 листов
Box2________Лист_________А4
Box2________Блокнот______Отрывной
Можно ли в dataGridView ее вывести в таком виде?
_______________Box1_________________
Карандаш___________Красный
Ручка_______________Parker
Фломастер___________Белый
_______________Box2__________________
Тетрадь_____________96 листов
Лист________________А4
Блокнот_____________Отрывной
Если это возможно, то хотя бы какой алгоритм этого?
Это надо из DataTable c помощью вложенных циклов записываь в dataGridView или как то иначе?
Есть ли в C# что то, чтобы взять строку таблицы в виде массива, как в PHP "mysql_fetch_array(запрос к бд)"?
Решение задачи: «Возможно так из базы в dataGridView?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace GridTest { public partial class Form1 : Form { DataTable datatable, datatable2; OleDbConnection con; OleDbDataAdapter adapter, adapter2; DataSet dset, dset2; string consring; DataRow datarow, datarow2; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { try { consring = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\dBase.mdb"; con = new OleDbConnection(consring); con.Open(); adapter = new OleDbDataAdapter("SELECT distinct boxes from cabinet", con);// Выбрать неповторяющиеся имена из boxeses dset = new DataSet(); adapter.Fill(dset, "cabinet"); datatable = new DataTable(); datatable = dset.Tables["cabinet"]; // dataGridView1.DataSource = datatable; сразу вывести всю таблицу //делаем столбцы вручную dataGridView1.Columns.Add("item", "item"); dataGridView1.Columns.Add("options", "options"); // счетчик для цикла int counRows = datatable.Rows.Count; // цикл for (int n = 0; n < counRows; n++) { datarow = dset.Tables["cabinet"].Rows[n]; string valueInboxes = Convert.ToString(datarow["boxes"]);// Переменная для второго запроса dataGridView1.Rows.Add(datarow.ItemArray); // вывод в грид неповторяющихся имен в колонке boxes // Подготавливаем для вложенного цикла adapter2 = new OleDbDataAdapter("SELECT item, options FROM cabinet WHERE boxes= '" + valueInboxes + "'", con); dset2 = new DataSet(); adapter2.Fill(dset2, "cabinet"); datatable2 = new DataTable(); datatable2 = dset2.Tables["cabinet"]; int counRows2 = datatable2.Rows.Count; // вложенный цикл for (int k = 0; k < counRows2; k++) { datarow2 = dset2.Tables["cabinet"].Rows[k]; dataGridView1.Rows.Add(datarow2.ItemArray);// выводим данные для каждого значения boxes } } con.Close(); } // обработка ошибок catch (Exception ex) { MessageBox.Show("Ничего не получилось " + ex.Message); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д