Vb.net / DataGridView - / ComboBox-Spalte

Ich bin mit vb.net und winforms.

Ich habe ein Formular mit einem DataGridView Gebunden. Auf der DGV ich habe 5 Spalten mit einer ComboBox. Ich bin mit dem EditingControlShowing Auch zu fangen der ComboBox Auswahl. (siehe code unten).
Hier ist das problem:

Nachdem ich Sie auf eine Zelle mit einer ComboBox eine Auswahl treffen und dann aktualisieren der zugrunde liegenden Zelle (Zelle = ausgewählt, Wert) und klicken Sie dann auf eine andere Zeile in der DGV geht es drunter und drüber. Wenn nach dem update ich die Zelle, die ich tun, und EndEdit auf die entsprechende Zeile der Datenquelle ein, es scheint zu funktionieren zu finden.

Wie kann ich feststellen, ob entsprechende Daten-Source-Zeile, so dass ich den Vorgang automatisieren?

Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) _
                Handles DataGridView1.EditingControlShowing
        Try
            Debug.Print("entered the EditingControlShowing")
            Dim ColName As String = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).Name
            If ColName = "Col1" Then 'Or ColName = "Col2" Or ColName = "Col3" Or ColName = "Col4" Or ColName = "Col5" Then

'the column you want to cast
        Dim cmb As ComboBox = TryCast(e.Control, ComboBox)
            RemoveHandler cmb.SelectedIndexChanged, AddressOf cmb_SelectedIndexChanged
            AddHandler cmb.SelectedIndexChanged, AddressOf cmb_SelectedIndexChanged
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Sub cmb_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    Try
        Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(Me.DataGridView1.CurrentCell.ColumnIndex).Value = CType(sender, ComboBox).SelectedItem
        '
        ' HERE IF I PUT MyDataSet.Tables(0).Rows(?).EndEding it works - but how to konw what row?
        '
        UpdateAvgColumn(Me.DataGridView1.CurrentRow.Index)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
  • Sie haben eine eindeutige Kennung, die in das DataGridView? Wenn ja, können Sie diesen Wert verwenden, finden Sie die entsprechende Zeile im Dataset.
  • Versuchen MyDataSet.Tables(0).Rows(Me.DataGridView1.CurrentRow.Index).EndEding
InformationsquelleAutor Alex | 2011-03-06
Schreibe einen Kommentar