#c# #datagridview #combobox
#c# #datagridview #combobox
Вопрос:
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
}
}
Этот код работает отлично, но только для одного значения в combobox… Мне нужны разные значения в разных строках для выпадающего списка. Как я могу это сделать?
В примере, когда в столбце 2 изменяется продукт, мне нужно, чтобы он изменил значения столбца 5, который является выпадающим списком с ценами продажи.
Буду признателен за любую помощь, на мой взгляд, у меня почти нет решения для этого. Спасибо.
Ответ №1:
Я не уверен, чего вы хотите, предполагая, что вы хотите привязать разные значения по строкам для столбца combobox В этом случае, если вы можете определить условие по строкам, используйте это
(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";
Это установит источник данных для этой конкретной ячейки вместо столбца, который вы делаете в данный момент.
Надеюсь, это поможет.
Комментарии:
1. Да, это то, что я хочу, и то, что я перепутал.. большое спасибо, что указали мне направление. p.s. Это все еще выдает мне ошибку, возможно, потому, что datamember и valuemember не установлены. Как я могу установить их в эту ячейку?
2. В нем говорится, что значение DataGridViewComboBoxCell недопустимо.
3. Отредактировано для настройки элементов.
4. Спасибо, это работает, теперь я собираюсь исправить остальную часть кода. Еще раз спасибо.
Ответ №2:
Я думаю, вам следует обработать CellParsing
событие вашего datagridview, и когда ячейка продукта будет изменена и пользователь перейдет к другой ячейке, заполните поле со списком желаемыми результатами.
Комментарии:
1. CellEndEdit это почти то же самое, поэтому я думаю, что это не будет иметь большого значения, в любом случае, спасибо за ответ.
2. Вы можете использовать e.значение из
cellparsing
события, чтобы узнать, какой продукт был выбран, и выполнить запрос базы данных на его основе, а затем привязать выпадающий список этой строки к вновь полученному результату. Я не могу протестировать это сейчас, но я думаю, что это должно сработать.