SuspendBinding

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Jeiss.

    SuspendBinding

    Hallo alle zusammen, ich brauche ein wenig Hilfe in sachen Bindung von Textboxen. Es geht um eine Form auf der ein paar Textboxen und ein ListView mit Daten über Termine und Errinerungen (Reminder) angezeigt werden sollten. Die Daten aus der DB gelangen nur über den Umweg einer DataTable in das ListView-Steuerelement. Die Textboxen sind an die DataTable gebunden wodurch mir immer der aktuelle DatenSatz in den Textboxen angezeigt werden kann. Das Problem ensteht beim eingeben eines neuen Termins. Dann wird zwar tatsächlich ein neuer Datensatz in die Tabelle hinzugefügt aber leider werden dann auch die Daten im letzten aktiven DatenSatz mit den neuen Werten der Textboxen überschrieben. (wegen der Bindung ) Um das zu umgehen wollte ich die "SuspendBinding"-Methode meiner Bindung anwenden.
    Meine Bindung zwischen den Textboxen und dem DataTable habe ich folfendermassen programmiert.

    VB.NET-Quellcode

    1. Private Shared WithEvents BS_REminder As BindingSource
    2. 'Beim laden der Form
    3. BS_REminder = New BindingSource(dsReminder, "Reminder")
    4. txtSub.DataBindings.Add(New Binding("Text", BS_REminder, "Reminder_Subject"))
    5. 'Vor dem Hinzufügen eines neuen Datensatzes in Tabelle
    6. BS_REminder.SuspendBinding()
    Die Fehlermeldung (in der letzten Zeile im Code-Schnipsel) lautet:
    System.InvalidOperationException wurde nicht behandelt.
    Message="DataBinding kann keine Zeile in der Liste finden, die für alle Bindungen verwendet werden kann."
    Source="System.Windows.Forms"
    StackTrace:
    bei System.Windows.Forms.CurrencyManager.FindGoodRow()
    bei System.Windows.Forms.CurrencyManager.CurrencyManager_PushData()
    bei System.Windows.Forms.CurrencyManager.OnItemChanged(ItemChangedEventArgs e)
    bei System.Windows.Forms.CurrencyManager.UpdateIsBinding(Boolean raiseItemChangedEvent)
    bei System.Windows.Forms.CurrencyManager.UpdateIsBinding()
    bei System.Windows.Forms.CurrencyManager.SuspendBinding()
    bei System.Windows.Forms.BindingSource.SuspendBinding()
    bei AddressBook2.Form2.Button4_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\JOS\Eigene Dateien\Visual Studio 2008\Projects\AddressBook2\Form2.vb:Zeile 95.
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.Run(ApplicationContext context)
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei AddressBook2.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    bei System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
    bei System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
    bei System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
    bei System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
    bei System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
    bei System.Activator.CreateInstance(ActivationContext activationContext)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    So jetzt fällt mir nicht ein wie ich mein Problem noch besser schildern könnte. Aber fragt mich ruhig falls ich wichtige Angaben vergessen haben sollte.
    Danke,
    Jeiss

    Hallo, habt ihr mich vergessen...?

    Hallo alle zusammen,

    habt ihr mich vergessen oder hat euch vieleicht die lange Fehlermeldung die ich in meinen letzten Beitrag rein kopiert habe etwas erschreckt. :| Ja ich muss zugeben die kann einem schon Angst einjagen. Wäre vermutlich besser gewesen wenn ich nur die Erste Zeile der Fehlermeldung kopiert hätte. Also wie auch immer, würde mich freuen wenn jemand schon erfahrung mit der Suspend- b.z.w. ResumeBinding Methode hätte. Würde nur zu gerne wissen wieso das ausgerechnet bei mir wieder nicht funktioniert?

    Danke,

    Jeiss