#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, чтобы связать их вместе. Если вы его привяжете, вы можете выбрать использование выпадающего списка в качестве типа столбца. Затем вы можете привязать второй набор данных к этому выпадающему списку. это автоматически создало бы ссылку.