1
我使用的是vb.net和winforms。Vb.net/DataGridView/ComboBox列
我有一个绑定DataGridView的窗体。在DGV上,我有5列ComboBox。我正在使用EditingControlShowing甚至可以捕获组合框选择。 (见下面的代码)。 这里是问题:
当我用一个组合框单击一个单元格,然后进行选择,然后更新基础单元格(单元格=选定的值),然后单击另一个DGV行就会出现故障。如果在我更新数据源的相应行上的Cell I do和EndEdit后,它似乎可以正常工作。
如何确定相应的数据源行是否可以自动执行此操作?
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
您是否在DataGridView中具有唯一标识符?如果是这样,您可以使用该值查找数据集中的相应行。 – N0Alias 2011-03-07 01:31:07
尝试'MyDataSet.Tables(0).Rows(Me.DataGridView1.CurrentRow.Index).EndEding' – NeverHopeless 2014-03-02 21:14:04