.NET Datagridview ComboxColumn-选定值

.NET Datagridview ComboxColumn-选定值,.net,vb.net,datagridview,.net,Vb.net,Datagridview,我在VB.NET中创建了一个包含datagridview(dg)的应用程序,绑定到datatable 然后,我创建一个DataGridViewComboBoxColumn,并使用另一个datatable中的下拉选项填充它 我将其与以下内容绑定: sHeader = "CType" With DDcol .DataSource = dtTemp .ValueMember = "VID" .Dis

我在VB.NET中创建了一个包含datagridview(dg)的应用程序,绑定到datatable

然后,我创建一个DataGridViewComboBoxColumn,并使用另一个datatable中的下拉选项填充它

我将其与以下内容绑定:

        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
我刚试过这个:

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中重写…

请添加所有相关代码;也就是说:
dtTemp
是什么,如何将
DDcol
添加到DGV,sHeader的值是什么,等等。谢谢@varocabas。刚刚编辑。