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.: 1 | 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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
ElseIf result = Windows.Forms.DialogResult.Yes Then
Me .BindingContext(dsSysData).EndCurrentEdit()
daSysData_01.Update(dsSysData.Tables( "ObjektyVeSprave" ).GetChanges())
dsSysData.Tables( "ObjektyVeSprave" ).AcceptChanges()
ElseIf result = Windows.Forms.DialogResult.No Then
Me .BindingContext(dsSysData).CancelCurrentEdit()
dsSysData.RejectChanges()
End If
End If
End Sub
|
|