我在VB.NET中创建了一个包含datagridview(dg)的app,绑定到数据表。
然后,我创建一个DataGridViewComboBoxColumn,并使用其他数据表中的下拉选项填充它。
我用以下内容绑定它:
sHeader = "CType"
With DDcol
.DataSource = dtTemp
.ValueMember = "VID"
.DisplayMember = "Display"
.HeaderText = sHeader
.FlatStyle = FlatStyle.Flat
.Name = sHeader
.DisplayIndex = 1
End With
dtTemp是一个数据表,包含SQL生成的值,如果在MS SQL Server Management Studio中运行,则显示如下:
VID Display
1 Value One
2 Value Two
然后我将列添加到datagridview。
dg.Columns.Add(DDcol)
按预期显示。
然而,ValueMember并未生效。
如果我向下拉列添加一个动作,它产生的值是DBNULL。如果我尝试使用下面的代码预先填充表格,那么它不起作用。任何帮助解决这个问题都将非常感激。
dg.Rows(0).Cells(sHeader).Value = 1
答案 0 :(得分:0)
我刚试过这个:
var dt = new DataTable();
dt.Columns.Add("vid", typeof(int));
dt.Columns.Add("display", typeof(string));
dt.Rows.Add(new object[] { 1, "one" });
dt.Rows.Add(new object[] { 2, "two" });
dt.Rows.Add(new object[] { 3, "three" });
dataGridView1.Columns.Add(new DataGridViewComboBoxColumn
{ DataSource = dt, ValueMember = "vid", DisplayMember = "display" });
dataGridView1.Rows[0].Cells[0].Value = 1;
...它完美无缺......也许你可以自己在vb.net中重写......