Reguły Walidacyjne

< Cofnij

 

Informacja

Zobacz jak dodać moduł do aplikacji: Definicja Dodatków

 

W tym artykule dowiesz się czym są reguły walidacyjne oraz jak je implementować. Jako przykład utworzymy taką regułę która będzie sprawdzać czy dane dotyczące stanu początkowego przejazdu (StanLicznikaPrzed) zgadzają się z ostatnim wpisem poprzedniego przejazdu. Ustalimy że StanLicznikaPrzed nie może być mniejszy niż aktualny przebieg pojazdu (StanLicznikaPo).

Aby osiągnąć nasz cel będziemy musieli dodać nowe pole (OstatniPrzebieg) do encji Samochod do którego będzie wysyłana wartość (StanLicznikaPo) poprzez metodę OnSave w encji SamochodPrzejazd, oraz zdefiniować regułę walidacyjną dla pola (StanLicznikaPrzed).

Dodanie pola

Pierwszym krokiem będzie dodanie pola OstatniPrzebieg do encji Samochod, pole to posłuży nam do przechwycenia i przechowania wartości z pola StanLicznikaPo. (Po każdym zapisie przejazdu będzie wysyłana nowa wartość Stanu Licznika Po).

// W tym miejscu będziemy definiować pola encji (properties).
//..
private int _OstatniPrzebieg;
        [ReadOnly(true)]
        public int OstatniPrzebieg
        {
            get { return _OstatniPrzebieg; }
            set { SetPropertyValue("OstatniPrzebieg", ref _OstatniPrzebieg, value); }
        }
//.. 

Definicja metody OnSave

Teraz do encji SamochodPrzejazd dodajmy metodę OnSave(), takie metody wykonują zdefiniowane przez nas czynności przy każdym zapisie (dodaniu) obiektu, w naszym przypadku przejazdu. Nasza metoda po każdym dodaniu Przejazdu będzie wysyłać wartość Stanu Licznika Po przejezdzie do pola OstatniPrzebieg.

// W tym miejscu będziemy definiować pola encji (properties).
//..
protected override void OnSaving()
        {
            base.OnSaving();
            Samochod.OstatniPrzebieg = StanLicznikaPo;
        }
//.. 

Definicja reguły walidacyjnej

Zostało już tylko zdefiniować regułę walidacyjną w encji SamochodPrzejazd dla pola StanLicznikaPrzed posłużymy się regułą RuleCriteria którą należy zdefiniować pod namespacem, czyli w tym samym miejscu co atrybuty encji.

// Tutaj będziemy mogli dodawać atrybuty encji
//..
[RuleCriteria("", DefaultContexts.Save, "StanLicznikaPrzed >= Samochod.OstatniPrzebieg", "StanLicznikaPrzed nie moze byc mniejszy od Ostatniego Przebiegu", SkipNullOrEmptyValues = false)]
//..

Efekt

Do encji Samochod zostało dodane nowe pole (OstatniPrzebieg), które przyjmuje wartości automatycznie od pola StanLicznikaPrzed. Stworzona została reguła walidacyjna która sprawdza czy wprowadzone dane początkowe zgadzają się z ostatnim przebiegiem.

Następny Artykuł: Akcje