在我的表单上,我有一个按钮,该按钮允许/禁止用户在DataGridView中进行编辑。此DGV绑定到同一窗体上的BindingSource(又绑定到DataSet的DataTable)。
Private Sub BtnModifica_Click(sender As Object, e As EventArgs) Handles btnModifica.Click
If btnModifica.Text = "Modifica" Then
dgvProg.EndEdit()
With dgvProg
.ReadOnly = False
.AllowUserToAddRows = True
.EditMode = DataGridViewEditMode.EditOnEnter
End With
ScegliMacchina.Enabled = False
AbilitaControlli(True)
btnModifica.Text = "Annulla Modifiche"
Else
MsgBox(dgvProg.CancelEdit())
ProgrammatoreDataSet.RejectChanges()
With dgvProg
.ReadOnly = True
.AllowUserToAddRows = False
.EditMode = DataGridViewEditMode.EditProgrammatically
End With
ScegliMacchina.Enabled = True
AbilitaControlli(False)
AggiornaDgvProg()
btnModifica.Text = "Modifica"
End If
End Sub
我的问题是CancelEdit方法。
当我在输入DGV的第一行时单击按钮时,取消似乎完成了,但是DGV中的数据消失了,就像清除了基础表一样。如果之前还有其他行,则可以找到所有数据,并且CancelEdit也已正确完成。
DGV在[Macchina]字段上显示了由BindingSource过滤器过滤的DataRow的选择,该字段由用户通过名为[ScegliMacchina]的ComboBox选择。我重建的每一个SelectedIndex更改都会将过滤器重新应用于BindingSource。
有人知道为什么吗?
谢谢。
胭脂红