Laden...

Massive Probleme mit dem DataGridView

Erstellt von Ishildur vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.725 Views
I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren
Massive Probleme mit dem DataGridView

Hallo zusammen
Wie ich gesagt, ich habe massive Probleme mit dem DataGridView Control:

Im Event Validating kann ich ja e.Cancel = true setzte, damit die Aktion abgebrochen und die aktive Zelle wieder in den Input - Modus gelangt. Das ist ja schön und gut, nur kann ich dann leider auch den Schliessen - Knopf des Formulars nicht mehr klicken. Ausserdem funktioniert das ja nicht für ConstraintExceptions, welche ich im Event DataError behandeln muss. Wenn der Benutzer also einen Doppelten Datensatz eingibt, dann kann ich Validating gar nichts machen, da dieser ja erst beim Aufruf von EndEdit ausgelöst wird. Diese wiederum wird ja vom DataGridView ausgelöst, wenn ich in Validating nicht e.Cancel = true gesetzt habe.
Gibt es vielleicht eine Möglichkeit, den Zeitpunkt von EndEdit selbst festzulegen ohne gleich in den Virtual Mode wechseln zu müssen. Denn alles selber machen mag ich auch nicht!

Gruss Ishildur

N
4.644 Beiträge seit 2004
vor 17 Jahren

Um bei fehlgeschlagener Validierung noch die Form schließen bzw. einen Focuswechsel machen zu können, musst Du Form.AutoValidate = AutoValidate.EnableAllowFocusChange setzen.

563 Beiträge seit 2004
vor 17 Jahren

Was hast du an das DataGridView gebindet? Am besten wäre ein BindingSource, da müsstest du nur BindingSource.EndCurrentEdit() aufrufen!

Ansonsten musst du an den CurrencyManager ran:

 ((CurrencyManager).BindingContext[_dataGridView, "Tablename"]).EndCurrentEdit();

Im CellValidating Event überprüfst du, ob die Eingabe des Benutzers in Ordnung ist. Ich mache im CellEndEdit-Event folgendes:

_dataGridView.Rows[e.rowIndex].ErrorText = String.Empty;

So kann man das Editieren/Hinzufügen mit der Escapetaste abbrechen, und die Fehlermeldung kommt nimmer. Ansonsten musst du das Form.AutoValidate wie bereits erwähnt anpassen.

Gruss,
.unreal

I
Ishildur Themenstarter:in
431 Beiträge seit 2005
vor 17 Jahren

@.unreal
Ja, ich habe ein BindingSource als DataSource des DataGridView, ber wenn ich im Validating - Event EndCurrentEdit aufrufe, dann bekomme ich doch das Problem, dass das DataGridView nach erfolgreichem validieren diese Methode noch einmal von sich aus aufruft oder vielleicht doch nicht?

563 Beiträge seit 2004
vor 17 Jahren

ich zitiere herbivore von "Scrollen im Datagridview"

gedacht oder ausprobiert?

.unreal