Как установить индекс выпадающего списка, который был динамически добавлен в datagridview

#c# #winforms

#c# #winforms

Вопрос:

Итак, вот небольшая предыстория, чтобы попытаться поместить вещи в контекст

Прежде всего, формат данных: у меня есть две базы данных, которые структурированы следующим образом

DB1 эта таблица содержит Field_Id наряду со всеми свойствами поля DB2 эта таблица содержит более широкую информацию наряду со ссылками на DB1 Field_Id , эта ссылка используется для получения Field_Name

такой простой SQL-запрос для лучшего описания

 Select Field_Name From DB1 Where Field_Id = (select Field_Id From DB2 where param = %)
  

это возвращает список, который привязывается к DataGridViewComboBox внутри datatable. Теперь до этого момента все идет отлично, ComboBox добавляется, все DataGridView заполняется, здесь возникает проблема

 for (int i = 0; i <= dataGridView1.RowCount - 2; i  )
        {
            dataGridView1.Rows[i].Cells[0].Value = valuetosetindex;
            dataGridView1.Refresh();
        }
  

Дело в том, что это не устанавливает значение ComboBox внутри 0-го столбца, если бы я просто установил столбцы в строки, это работает, но установленное значение не работает.

Я более чем рад добавить больше кода, если это необходимо.

Комментарии:

1. Покажите, как вы настраиваете источник данных DGV и столбец выпадающего списка DGV.

Ответ №1:

С помощью вашего фрагмента кода вы собираетесь добавить недопустимое значение к объекту, что приведет к ArgumentException .

Как вы уже упоминали, если вы присваиваете строку значению, оно работает. Вам нужно только получить доступ к valuetosetindex элементу ComboBox :

dataGridView1.Rows[i].Cells[0].Value = yourColumn.Items[valuetosetindex];

В этом фрагменте кода yourColumn есть ваш ComboBox код, который привязан к столбцу.

Комментарии:

1. Привет, Марио, проблема в том, что выпадающий список добавляется динамически путем создания списка, а затем вставки его в datatable и привязки этого datatable к datagridview. Ваше решение сработало бы, если бы не этот случай.

2. @DigitPlays, тогда вам придется использовать свой список вместо yourColumn.Items[valuetosetindex] . Например: dataGridView1.Rows[i].Cells[0].Value = yourList[valuetosetindex];

Ответ №2:

Как ваш Datagridview привязан к данным? Я бы предложил использовать Dataset и BindingSource, чтобы связать их вместе. Если вы его привяжете, вы можете выбрать использование выпадающего списка в качестве типа столбца. Затем вы можете привязать второй набор данных к этому выпадающему списку. это автоматически создало бы ссылку.