Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 为什么DataGridViewComboBoxColumn显示ValueMember?_Vb.net_Datagridview_Datagridviewcombobox - Fatal编程技术网

Vb.net 为什么DataGridViewComboBoxColumn显示ValueMember?

Vb.net 为什么DataGridViewComboBoxColumn显示ValueMember?,vb.net,datagridview,datagridviewcombobox,Vb.net,Datagridview,Datagridviewcombobox,我有个小问题DataGridViewComboxColumn显示来自ValueMember的值,而不是来自DisplayMember。网格工作正常,当我从该列中选择某个内容时,我会看到DisplayMember值,但当焦点丢失时,网格会显示ValueMember。我有以下代码组合框列: statusCBoxColumn.DataSource = dt 'datatable with two fields StatusId and StatusText statusCBoxColumn.Displ

我有个小问题
DataGridViewComboxColumn
显示来自
ValueMember
的值,而不是来自
DisplayMember
。网格工作正常,当我从该列中选择某个内容时,我会看到
DisplayMember
值,但当焦点丢失时,网格会显示
ValueMember
。我有以下代码组合框列:

statusCBoxColumn.DataSource = dt 'datatable with two fields StatusId and StatusText
statusCBoxColumn.DisplayMember = "StatusText" 'is type NVarchar
statusCBoxColumn.ValueMember = "StatusId" 'is type Int
有人能帮我吗


编辑:我用以下方法解决了这个问题:

Private Sub dgv_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgv.CellFormatting
  If (dgv.Columns(e.ColumnIndex).Name = "statusCBoxColumn") Then
    If e.Value & "" > "" Then
      Dim s1 As String = e.Value
      e.Value = GetData("Select StatusText from Status where ID = " & e.Value).ToString()
    End If
  End If
End Sub

但是我不认为这是最好的解决方案…

您设置了comboboxcolumn的datapropertyName并将该列添加到datagridview了吗?你必须写作

    statusCBoxColumn.DataPropertyName = "StatusId";
并添加如下列:

    datagridview1.Columns.Add(statusCBoxColumn);
我也有同样的问题。 我的“状态ID”很长。 我是通过system.type.gettype(“system.Int64”)创建的 这就产生了同样的行为。 将其更改为Int32时,行为正常


所以valuemember类型和datagridview类型不匹配。

试试这个,我在显示valuemember时也遇到了问题,希望它能正常工作

    For index = 0 To cbo.Items.Count - 1
        cbo.SelectedIndex = index 
        MessageBox.Show(CType(cbo.SelectedValue, String))
    Next
我用的是:

    Dim jm As Integer
    jm = CType(cmbCategory.SelectedValue, String)
    MsgBox(jm)

e、 Value=GetData(“选择to_char(StatusId),StatusText from Status where ID=“&e.Value”)。ToString()

Yes,设置DataPropertyName并将列添加到datagridview。datagridview工作正常,我可以更改此列的值,但当我从该网格更改焦点时,ComboBoxColumn中的show ValueMember不是DisplayMember。您好@skorec1,欢迎使用SO!你能再解释一下吗?它能解决问题吗?有什么问题?只是更多的细节而已。另外,请将其包含在代码块(“{}”按钮)中,以便更易于阅读。