none
BindingNavigator Ausnahme verhindern/abfangen RRS feed

  • Frage

  •  

     

    Hallo Zusammen.

    Ich habe in einem Form ne Detailansicht einer Datenbank erstellt und einen BindungNavigator. Eines der Felder lässt keine NULL zu.

    Wenn ich jetzt einen neuen Datensatz anlege, mich dann aber umentscheide und über den BindingNavigator einen Datensatz zurück blättere löse ich eine Ausnahme aus. Soweit ist das verständlich, aber wie kann ich das verhindern. Also entweder einen Try-Catch Block einfügen oder eine MessagBox ausgeben und die Funktion beenden, oder sowas?

    Wenn ich es richtig gesehen habe, wird der Code aus toolStripButton1_Click erst ausgeführt, wenn die Ausnahme schon ausgelöst wurde. 

    Wie geht man da vor?

    Gruß Markus

    Samstag, 15. Januar 2011 11:49

Antworten

  • Ich habe mittlerweile eine Lösung für das Problem.
    Vielleicht hat ja mal jemand das Gleiche.

    Das Ereignis ItemClicked des BindingNavigators wird recht früh ausgelöst und eigent sich in meinem Fall.
    Da ich bei jedem Wechsel des sichtbaren Datensatzes speichern will (ich bin hier in der Detailansicht meiner Daten), versuche ich also bei jedem Click auf den BindingNavigator die Speicherung in einem try and catch Block. Schlägt die Speicherung fehl, ist es wichtig CancelEdit() zu verwenden, damit die Bearbeitung auch abgebrochen wird. Sonst bleibt das Programm trotz der Exceptionbehandlung mit dem Fehler NoNullAllowedExcpetion hängen.

      private void kundenBindingNavigator_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
      {
       try
       {
        this.Validate();
        this.kundenBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this._P_ODataSet);    
       }
       catch (NoNullAllowedException)
       {
        MessageBox.Show("Pflichtfelder, wie Name, müssen gefüllt werden!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);        
        this.kundenBindingSource.CancelEdit();
       }
    
       catch (Exception ex)
       {    
        MessageBox.Show("Ein Fehler ist aufgetreten! Bitte verständigen Sie den Support.\n\n\n\nKomplette Fehlermeldung, für den Support:\n\n" + ex.ToString(), "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
        this.kundenBindingSource.CancelEdit();
       }
      }
    Gruß
    Markus
    Montag, 31. Januar 2011 11:37