Я все еще немного новичок в C #, но я использую Winforms, и у меня есть DataGridView, который подключен к источнику данных и заполняется правильно.
Я также добавил ComboBoxColumn во время выполнения.Этот ComboBoxColumn подключается к источнику данных, элемент отображения и значение элемента устанавливаются, устанавливается текст заголовка, а затем столбец добавляется в сетку данных.Соединение работает очень хорошо, и когда пользователь щелкает поле со списком, заполняется, как и ожидалось.
Когда пользователь завершает новую строку в сетке, он, очевидно, выберет элемент в поле со списком, а затем вся строка обновится домоя база данных, когда закончите.
Мой вопрос: когда эта сетка данных открывается снова или перерисовывается, она заполняется из-за свойства источника данных, но как я могу получить в ячейке comboBox значение VALUE, которое он выбрал изначально, а не простопустая коробка.Я знаю код получения значения из БД и ввода значения.Идеальным было бы, если бы я мог поместить эту переменную на дисплей comboBox.Имейте в виду, что comboBox по-прежнему привязан к данным, чтобы пользователь мог изменить значение, если он этого пожелает?
Я знаю, что в обычном элементе управления comboBox я должен просто установить свойство .Text.Но DataGridViewComboBox не имеет того же свойства.
Вот код для фактического подключения к данным и добавления comboBoxColumn:
public void AddComboBoxColumn(DataGridView datagridName, DataTable table, string headerText, int columnIndex)
{
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
GetDisplayAndValueMembers(table, headerText); //Calls method that gets the datasource, displaymember, valuemember depending on column
column.DataSource = tableRef; //sets datasource to table referenced by column
column.DisplayMember = displayMember; //sets displaymember
column.ValueMember = valueMember; //sets valuemember
column.HeaderText = headerText; //changes headertext to displayed text
if (newColumnIndex == 0)
datagridName.Columns.Add(column); //added to end of datagrid
else
{
datagridName.Columns.RemoveAt(columnIndex);
datagridName.Columns.Insert(newColumnIndex, column); //added in specific index if needed
}
}
Это только показывает соединение данных раскрывающегося списка.Очевидно, что используется много методов с большим количеством кода.Но это не проблема, так как работает нормально.Я не знаю, как решить проблему с отображением ранее выбранного элемента в качестве текста поля со списком?