我对 C# 还是有点陌生,但我使用的是 Winforms,并且我有一个 DataGridView,它连接到数据源并且被正确填充。
我还在运行时添加了一个 ComboBoxColumn。此 ComboBoxColumn 连接到数据源,设置了 displaymember 和 valuemember,设置了 headertext,然后将列添加到数据网格中。连接工作得很好,当用户单击组合框时,按预期填充。
当用户完成网格中的新行时,他显然会选择组合框中的项目,然后在完成后将整行更新到我的数据库中。
我的问题是:当再次打开或重绘此数据网格时,由于数据源属性而填充它,但是如何让组合框单元格显示他最初选择的值,而不仅仅是一个空白框。我知道从数据库中获取值并输入值的代码。理想的情况是我可以将该变量放在组合框的显示中。请记住,组合框仍然是数据绑定的,以便用户可以根据需要编辑值?
我知道在普通的组合框控件中,我应该只设置 .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
}
}
这只是显示下拉的数据连接。显然,有许多方法与大量代码一起使用。但这不是问题,因为它工作正常。我不知道如何解决将先前选择的项目实际显示为组合框文本的问题?