C# Передача ValueMember из DataGridViewComboBoxColumn в таблицу БД как ID

131
04 сентября 2021, 14:20

Добавляю столбец ProductComboBox в datagridview и подгружаю значения из таблицы d__Product. Все выводит правильно.

        string GetProduct = "select * from d__Product";
        DataTable dt = DbConnection.DBConnect(GetProduct);
        DataGridViewComboBoxColumn ProductComboBox = new 
        DataGridViewComboBoxColumn();
        ProductComboBox.FlatStyle = FlatStyle.Flat;
        ProductComboBox.HeaderText = "Продукт";
        ProductComboBox.Name = "ProductComboBox";
        ProductComboBox.DisplayMember = "Name";
        ProductComboBox.ValueMember = "ID";
        ProductComboBox.DataPropertyName = "ID";
        ArrayList row = new ArrayList();
        foreach (DataRow dr in dt.Rows)
        {
            row.Add(dr["Name"].ToString());
        }
        ProductComboBox.Items.AddRange(row.ToArray());
        dataGridView1.Columns.Add(ProductComboBox);

Теперь мне необходимо отправлять данные из datagridview в таблицу БД. При выборе данных их combobox у меня выводит только имена, а мне необходимо выводить ID (ValueMember). Подскажите, пожалуйста, как это сделать? Код отправки данных в таблицу БД, ниже. Отправка данных из Combobox происходит в строке dataGridView1.Rows[i].Cells[2].Value

    private void button1_Click(object sender, EventArgs e)
    {
        string GetID = "select ID from d__RenderedServiceHead where NUM = '" 
        + GetStatus + "'";
        DataTable dt = DbConnection.DBConnect(GetID);
        string ID = dt.Rows[0][0].ToString();
        for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
        {
            string FillBody = "insert into d__RenderedServiceBody values(" + 
            dataGridView1.Rows[i].Cells[1].Value + ",'" + 
            dataGridView1.Rows[i].Cells[2].Value + "','" + 
            dataGridView1.Rows[i].Cells[3].Value + "','" + ID + 
            "',NULL,NULL,NULL,NULL)";
            DbConnection.DBConnect(FillBody);
        }
    }
Answer 1

Нашел ошибку в своем коде. Через foreach я вывожу значения только Name, без ID в принципе. Прописал так ProductComboBox.DataSource = dt; теперь все правильно выходит.

READ ALSO
Почему эти два куска кода не одно и то же?

Почему эти два куска кода не одно и то же?

Вот расписанный по операциям код - он работает

184
Медленно качаются FileStream&#39;ы из MS SQL

Медленно качаются FileStream'ы из MS SQL

В общем, есть метод, который шлет запрос к БД и выкачивает 2 файла весом ~150мбТ

105
передача данных между combobox&#39;ами разных форм

передача данных между combobox'ами разных форм

Подскажите как передать данные между комбобоксами с главной формы на дочернюю

122
Подсчет сокращенных ссылок

Подсчет сокращенных ссылок

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

106