4

答えが見つからないので初投稿です。

一連の ComboBoxes を持つデータ バインドされた GridView があります。基になるテーブルの値が正しく表示され、正しい値がドロップダウン リストに表示されます。コンボボックスの 1 つには int .valuemember があり、すべてがうまく機能します。他の ComboBox には文字列 .valuemember があり、コンボ ボックスで別の値を選択すると、バインドされたテーブルに更新されません。

それらは、同じテーブルと同じグリッドからの同じコードでバインドおよび更新されます。特に ESRI ArcGIS ファイルにバインドしています。正しくバインドされているようで、他のプロジェクトでうまく使用しています。すべての列の変更を再び表示および更新し、整数ベースの行への変更を受け入れます。したがって、私はおそらくばかげて、これを除外しました。

文字列 .valuemember 値を更新するために何をする必要があるのか​​ わかりません。

私が推測する単純なものが欠けていますが、それが何であるかわかりません。ここにいくつかのサンプルコードがあります。

Domain1 As BindingList(Of Domaintype)
Domain2 As BindingList(Of Domaintype)
GridView.DataSource = pBindingSource

'add the columns desired
    GridView.Columns.Add(CreateComboBoxColumn("Column1Value", "Type1", Domain1 , "NonCodedIntValue"))
    GridView.Columns.Add(CreateComboBoxColumn("Column2Value", "Type2", Domain2 , "NonCodedCharValue"))

Private Function CreateComboBoxColumn(ByVal ColumnName As String, ByVal AliasName As String, ByRef DomainName As BindingList(Of Domaintype), ByVal pValueMember As String) As DataGridViewComboBoxColumn
    CreateComboBoxColumn = New DataGridViewComboBoxColumn
    With CreateComboBoxColumn
        .DataPropertyName = ColumnName
        .HeaderText = AliasName
        .ReadOnly = False
    End With
    With CreateComboBoxColumn
        .DataSource = DomainName
        .DisplayMember = "CodedValue"
        .ValueMember = pValueMember
    End With
    Return CreateComboBoxColumn
End Function

Private Sub GridView_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) Handles GridView.CurrentCellDirtyStateChanged
    If GridView.IsCurrentCellDirty Then
        GridView.CommitEdit(DataGridViewDataErrorContexts.Commit)
    End If
End Sub

Public Class Domaintype
    Private CodedValue As String
    Private NonCodedInt As Nullable(Of Short)
    Private NonCodedChar As String

    'adds a new coded value based on a sent non-coded and coded value
    Public Sub New(ByVal SentCodedValue As String, ByVal SentNonCoded As Nullable(Of Short), Optional ByVal SentNonCodedChar As String = Nothing)
        CodedValue = SentCodedValue
        NonCodedInt = SentNonCoded
        NonCodedChar = SentNonCodedChar
    End Sub
    'Gets or sets the coded value of a domain
    Public ReadOnly Property CodedValue() As String
        Get
            Return CodedValue
        End Get
    End Property
    'gets or sets the non-coded value of a domain
    Public ReadOnly Property NonCodedIntValue() As Nullable(Of Short)
        Get
            Return NonCodedInt
        End Get
    End Property

    'gets or sets the non-coded value of a domain
    Public ReadOnly Property NonCodedCharValue() As String
        Get
            Return NonCodedChar
        End Get
    End Property
End Class
4

0 に答える 0