4

小さな問題があります。からではなく からDataGridViewComboBoxColumnの値を表示します。グリッドは正常に機能し、この列から何かを選択すると値が表示されますが、フォーカスが失われると、グリッドに. 私はこのコードコンボボックスの列を持っています:ValueMemberDisplayMemberDisplayMemberValueMember

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

しかし、それが最善の解決策だとは思いません...

4

4 に答える 4

1

私も同じ問題を抱えていました。私の「statusID」は長いです。system.type.gettype("System.Int64") で作成しましたが、同じ動作をしました。Int32に変更したら動作OKでした。

したがって、valuemember 型と datagridview 型の不一致でした。

于 2012-06-29T18:19:55.720 に答える
0

コンボボックス列の datapropertyName を設定し、列を datagridview に追加しましたか? あなたは書く必要があります

    statusCBoxColumn.DataPropertyName = "StatusId";

のような列を追加します

    datagridview1.Columns.Add(statusCBoxColumn);
于 2012-05-30T09:05:54.483 に答える
0

これを試してみてください。値のメンバーの表示にも問題があります。うまくいくことを願っています。

    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)
于 2013-01-09T09:13:07.500 に答える