.NET Datagridview ComboBoxColumn - 选择的值

时间:2013-12-04 13:30:02

标签: .net vb.net datagridview

我在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

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