2016-03-23 16 views
1

ich ein einfaches Formular mit Enumarationsfeld auf einem Raster erstellt haben, aus der CompanyImage Datasource gezogen:Wo Validierungscode platzieren

Tabelle CompanyImage hat einen Index auf diesem Gebiet in meinem Beispiel genannt Brand und AllowDuplicates zu Nein gesetzt:

enter image description here

Und hier ist die Form:

enter image description here

ich so die close() -Methode des Formulars überschrieben haben:

public void close() 
{ 
    CompanyImage_ds.write(); 
    super(); 
} 

ein Fehler angezeigt wird, wenn ich es in der Nähe von selbst, dass

„einen Datensatz nicht in CompanyImage erstellen (CompanyImage). Rechtspersonen: Beispiel1. Der Datensatz existiert bereits.“

Das ist in Ordnung, aber ich würde einen Weg, wie das Fenster schließen zu stoppen, wenn dies geschieht. Ein validateWrite() wäre schön, aber ich bin nicht wirklich in der Lage, um herauszufinden, wo und was zu schreiben, um zu erreichen dieses Verhalten.

ich meine, wie die neue Zeile zu überprüfen, wird hinzugefügt und es enthält ein Feld, das bereits in der Tabelle vorhanden ist?

Antwort

4

Sie sollen() -Methode nicht die Schreib erzwingen müssen. das Schließen der Formular sollte es schon tun ..

Wenn Sie etwas an alle überprüfen möchten Wenn die Form geschlossen wird, ist die Methode close() zu spät ausgeführt. Sie sollten die canClose() -Methode nutzen.

0

Sie können die Validierungsmethode der Rasterspalte überschreiben. Sie müssten in dieser Methode eine Validierungslogik schreiben, die jedoch verhindert, dass die Spalte überhaupt gespeichert wird, wenn die Validierung fehlschlägt.

public boolean validate() 
{ 
    boolean ret; 
    // write your own validation logic 
    if (validation logic is true) 
    { 
     ret = true; 
    } 

    return ret; 

}