Zdravím, mám takový problém s bindingsource. Při události positionchanged testuji, zda nebyl záznam změněn, pokud ano, musí uživatel zadat přes messagebox, co chce provést - uložit záznam, zrušit změny nebo zůstat na záznamu. 1. problém je, že neexistuje příkaz e.cancel=true, takže nevím, jak mám zůstat na aktuální pozici 2. problém je, že na formu jsou mimo jiné i comboboxy, které jsou svázány na data násl.:
Me.ComboBoxEx1.DataBindings.Add("SelectedValue", Me.BindingSource_DetailObjektu, "TypObjektu")
Pokud se formulář spustí, a uživatel přejde na jiný záznam, tak mu vyskočí hláška o změně záznamu, i když uživatel žádný záznam nezměnil. Pokud přeskočí na jiný záznam znovu, tak se hláška již nezobrazí. Pokud vyhodím bindování comboboxu, všechno funguje jak má. nesetkal se s tím někdo? změnu záznamu hlídám násl:
Private Sub BindingSource_DetailObjektu_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingSource_DetailObjektu.PositionChanged
Me.BindingSource_DetailObjektu.EndEdit()
If dsSysData.Tables("ObjektyVeSprave").GetChanges IsNot Nothing Then
Dim result As New DialogResult
result = MessageBox.Show("Byl změněn záznam. Chcete jej uložit?", "Změna", MessageBoxButtons.YesNoCancel)
If result = Windows.Forms.DialogResult.Cancel Then
'zůstat na aktuální pozici
ElseIf result = Windows.Forms.DialogResult.Yes Then
'uložit změny
Me.BindingContext(dsSysData).EndCurrentEdit()
daSysData_01.Update(dsSysData.Tables("ObjektyVeSprave").GetChanges())
dsSysData.Tables("ObjektyVeSprave").AcceptChanges()
ElseIf result = Windows.Forms.DialogResult.No Then
'zrušit změny
Me.BindingContext(dsSysData).CancelCurrentEdit()
dsSysData.RejectChanges()
End If
End If
End Sub
|