Различные значения ComboBox в DataGridView в разных строках - PullRequest
5 голосов
/ 02 мая 2011
    private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        int MaxRows = dgv.Rows.Count;

        for (int i = 0; i < MaxRows-1; i++)
        {                
            SqlDataAdapter da = new SqlDataAdapter("SELECT CAST(originalPrice * " + (1.00 + (float.Parse(txtMarkUp.Text) / 100.00)).ToString() + " * " + (1.00 + (float.Parse(dgv.Rows[i].Cells[4].Value.ToString()) / 100.00)).ToString() + " AS decimal (8,2)) AS sellingPrice FROM Warehouse WHERE barcode = '" + Convert.ToString(dgv.Rows[i].Cells[2].Value) + "'", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);

            DataGridViewComboBoxColumn sellingPrice = dgv.Columns["sellingPrice"] as DataGridViewComboBoxColumn;

            sellingPrice.DataSource = dt;
            sellingPrice.ValueMember = "sellingPrice";
            sellingPrice.DisplayMember = "sellingPrice";

            dgv.Rows[i].Cells[5].Value = dt.Rows[0].ItemArray.GetValue(0);
            dgv.Rows[i].Cells[4].Value = dt.Rows[0].ItemArray.GetValue(2).ToString(); //percent of tax for that category of product
        }
    }

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

Ответы [ 2 ]

7 голосов
/ 02 мая 2011

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

(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).DataSource = dt;
(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).ValueMember = "sellingPrice";
(dgv.Rows[i].Cells[5] as DataGridViewComboBoxCell).DisplayMember = "sellingPrice";

Это установитИсточник данных для этой конкретной ячейки вместо столбца, который вы сейчас делаете.

Надеюсь, это поможет.

0 голосов
/ 02 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...