Я использую vb.net и winforms.
У меня есть форма с привязанным DataGridView. На DGV у меня 5 столбцов с ComboBox. Я использую EditingControlShowing Even, чтобы поймать выделение ComboBox. (см. код ниже). Вот в чем проблема:
После того, как я нажимаю на ячейку с ComboBox и делаю выбор, а затем обновляю базовую ячейку (ячейка = выбранное значение), а затем нажимаю на другую строку DGV, она выходит из строя. Если после того, как я обновляю Cell I do и EndEdit в соответствующей строке DataSource, кажется, что работает find.
Как я могу определить соответствующую строку источника данных, чтобы это можно было автоматизировать?
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
MyDataSet.Tables(0).Rows(Me.DataGridView1.CurrentRow.Index).EndEding
- person NeverHopeless   schedule 03.03.2014