值未显示在 DataGridViewComboBox 控件上
Posted
技术标签:
【中文标题】值未显示在 DataGridViewComboBox 控件上【英文标题】:Value doesn't show up on a DataGridViewComboBox control 【发布时间】:2012-01-17 13:57:43 【问题描述】:在DataGridView
中设置值后,即使我可以通过Value
属性访问它们,它们也不会显示在控件上。
问题是ComboBox
单元格中没有默认的Value
。
void ComboBoxColumn()
string[] values = "one", "two", "three" ;
string columnName = "Test";
var column = new DataGridViewComboBoxColumn();
column.Name = columnName;
column.ValueType = typeof(string);
foreach(string item in values)
column.Items.Add(item);
Grid.Columns.Add(column);
// problematic part
foreach(DataGridViewRow row in Grid.Rows)
row.Cells[columnName].Value = values[0];
【问题讨论】:
【参考方案1】: void AddComboColumn()
string[] values = "one", "two", "three" ;
string columnName = "Test";
var column = new DataGridViewComboBoxColumn();
column.Name = columnName;
column.ValueType = typeof(string);
foreach (string item in values)
column.Items.Add(item);
dataGridView1.Columns.Add(column);
foreach (DataGridViewRow row in dataGridView1.Rows)
row.Cells[columnName].Value = values[2];
这些代码也可以工作...检查一下,'RandomValue(values);'中可能有问题吗? 我没有这部分代码,无法确定。 附言在我的 prog 默认值 == "three"。
【讨论】:
我说的是组合框中的默认值,而不是下拉菜单。 RandomValues() 工作正常。 如果我理解你没有下拉列表?或者你只是没有默认值? 我没有默认值。 有趣,我不能重复这个问题。以我的方式,一切都很好。 哦!好的!我重复!只有当我有相同名称的列(“测试”)时,我才没有默认值。我两次调用此方法,在第二列中我没有默认值。检查一下,你可能有相同的列名吗?【参考方案2】: void SetValues()
string[] values = "one", "two", "three" ;
string columnName = "Test";
var column = new DataGridViewComboBoxColumn();
column.Name = columnName;
column.ValueType = typeof(string);
foreach (string item in values)
column.Items.Add(item);
dataGridView1.Columns.Add(column);
在我的机器上,这段代码正在运行。如果我单击 ComboBoxColumn 我可以看到树值并选择一个。你有什么问题?
foreach (DataGridViewRow row in dataGridView1.Rows)
row.Cells[columnName].Value = values[1];
如果添加此代码,组合框的默认值显示值“二”。
【讨论】:
这不是问题,问题是第二部分。 row.Cells[columnName].Value = values[1];也有效。您没有提供 RandomValue 的代码。 奇怪,对我不起作用。另外,编辑了问题以使自己更清楚。 row.Cells[columnName].Value = values[1];显示值“二”作为默认值。我不明白你的问题。【参考方案3】:我无法重现您的错误。这是我的 sample project
试着给我们任何其他可能是问题的东西。
注意:我直接复制了您的代码(然后在某些行中添加了)
【讨论】:
【参考方案4】:首先为 datagridveiw ColDryg 中的组合框命名 然后在 initvalue 函数中写下这段代码
DataGridViewComboBoxColumn ColDryg =
(DataGridViewComboBoxColumn)Gv_dtails.Columns["ColDryg"];
ColDryg.DataSource = db.Drugs.ToList();
ColDryg.ValueMember = "Id";
ColDryg.DisplayMember ="Arabic_name";
你在数据库中有一个表,它的名字是 Drug
【讨论】:
以上是关于值未显示在 DataGridViewComboBox 控件上的主要内容,如果未能解决你的问题,请参考以下文章