Добавить данные из БД в DataGridViewComboBoxColumn с разными значениями для каждой строки - PullRequest
0 голосов
/ 17 июня 2020
    SqlConnection sqlconn = new SqlConnection(mainconn);
    string sqlquery = "select * from [dbo].[category]";
    SqlCommand sqlComm = new SqlCommand(sqlquery, sqlconn);
    sqlconn.Open();            
    SqlDataAdapter sda = new SqlDataAdapter(sqlComm);           
    DataTable dt = new DataTable();            
    sda.Fill(dt);
    foreach (DataRow item in dt.Rows)
    {
        int n = categoryGrid.Rows.Add();
        categoryGrid.Rows[n].Cells["categoryId"].Value = item["categoryId"].ToString();
        categoryGrid.Rows[n].Cells["CategoryCode"].Value = item["CategoryCode"].ToString();
        categoryGrid.Rows[n].Cells["CategoryName"].Value = item["CategoryName"].ToString();
    }           

    for (int i = 0; i < categoryGrid.Rows.Count; i++)
    {
        int catid = int.Parse(categoryGrid.Rows[i].Cells["CategoryId"].Value.ToString());
        var cellSample = new DataGridViewComboBoxCell();
        string sqlquery1 = "select subCategoryName from [dbo].[subcategory] where categoryId='"+catid+"'";
        SqlCommand sqlComm1 = new SqlCommand(sqlquery1, sqlconn);
        SqlDataAdapter sda1 = new SqlDataAdapter(sqlComm1);
        DataTable dt1 = new DataTable();
        sda1.Fill(dt1);

        foreach (DataRow item in dt1.Rows)
        {

            categoryGrid.Rows.Add(cellSample);
        }

    }

У меня есть две таблицы в категории и подкатегории базы данных:

category table 
cateroyid , code ,      categoryName 
4           cm-003       computer accessories
5           cm-004       routers
subcategory table
subcateroyid , cateroyid ,      subcategoryNam
1                 4                keyboard 
2                 4                  mouse
3                 5                  tplink
4                 5                  tenda

categoryid - внешний ключ

Я хочу показать в сетке categoycode и categoryname из первой таблицы и ComboBox любой строки, соответствующей строке в таблице подкатегорий, первая строка ComboBox будет содержать клавиатуру и мышь, а вторая строка tplink и tenda.

...