Announcement

Collapse
No announcement yet.

Fehler beim Uddate vom DataGridView abfangen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler beim Uddate vom DataGridView abfangen

    Hallo zusammen,

    ich habe eine DataTable, mit der ich eine DataGridView fülle. Über das Ereignis DataTable_ColumsChanging führe ich eine Update auf die Datentabelle. Sprich, wenn ich etwas in dem DataGridView ändere und in eine andere Spalte/Zeile springe werden die Daten gespeichert.

    So weit so gut. Bis hier klappt alles .....

    Wenn ich nun auf den RowHeader des DataGridView Klickebekomme ich folgende Fehlermeldung:

    System.InvalidOperationException wurde nicht behandelt.
    Message="Die aktuelle Zelle kann nicht auf eine unsichtbare Zelle festgelegt werden."


    Hat jemand eine Idee wie ich diesen Fehler wegbekomme ?

    Mir würde es schon reichen, wenn ich eine Meldung rausgebe, wenn jemand auf den RowHeader klickt und gleichzeitig das auslösen des Ereignises DataTable_ColumsChanging unterbunden wird...

    Weis jemand wie man das macht.... Oder hat jemand ein bessere Idee ?

    Bin für jede Hilfe dankbar...

  • #2
    Hallo Merlin,

    wenn Du keine besonderen Gründe dafür hast bei jedem Zeilensprung die Daten zu speichern, würde ich darauf verzichten und statt dessen beim Validate-Ereignis des Datagrid's die geänderten Zeilen updaten.
    Grundsätzlich würde ich an Deiner Stelle auch der der MS Philosophie folgen und erst an der BindingSource Datenänderungen vornehmen und nach dem Validieren über den TableAdapter in die Table schreiben.
    Falls Du jedoch zwingend die Daten nach jedem Focuswechsel im Datagrid endgültig in der Table speichern musst, dann würde ich das Speichern ausschöließlich über Ereignisse des Datagrids initialisieren. Dafür gibt es eine Menge vordefinierte Ereignishandler.

    Ich hoffe Dein Problem richtig verstanden und Dir einBischen geholfen zu haben.

    Grüße

    Manfred

    Comment


    • #3
      Das ist eine Vorgabe, dass bei jedem Focuswechsel die Daten gespeichert werden, natürlich bei Änderung.
      Ich hab mir jetzt notdürftig geholfen...
      Ich fange den RowHeaderClick ab und unterbind in solchem Fall das Update...

      Code:
      Dim MyGrid As DataGridView = CType(sender, DataGridView)
          Dim HitTest As DataGridView.HitTestInfo
      
          blnRowHeaderGridClick = False
          If e.Button = Windows.Forms.MouseButtons.Left Then
            HitTest = MyGrid.HitTest(e.Location.X, e.Location.Y)
            If HitTest.Type = DataGridViewHitTestType.RowHeader Then
              blnRowHeaderGridClick = True
            End If
          End If
      Dies mach ich im MouseDown des DataGrid.
      Über den Flag blnRowHeaderGridClick werte ich dann diesen Fall aus..

      Halt notdürftig, aber mir ist nichts besseres eingefallen...

      Comment

      Working...
      X