En   Sk  
 
 
 
 
 
 
 
 

Články o Px Frameworku:


Validácia, kontrola zadaných hodnôt prostredníctvom komponenty PxWebQuery a ostatných vizuálnych komponent(PxEdit, PxComboBox a atď.)



Komponenta PxWebQuery prostredníctvom komponenty PxEdit(ale aj PxComboBox, PxFlyComboBox, PxJSDatePicker a pod.) obsahuje automatickú validáciu. Ak stĺpec tabuľky, ktorý je pripojený na komponentu PxEdit je typu string, je automaticky prevádzaná validácia dĺžky reťazca, ak je typu int, validuje sa či bolo zadané celé číslo, ak je typu date, validuje sa či bol zadaný validný dátum a pod.
Na obrázku je príklad, kde sme zadali reťazec, ktorý svojou dĺžkou presahoval dĺžku reťazca stanoveného v databáze. Ďalej sme zadali dátum, ktorý nebol validný. Prepojením komponenty PxWebQuery a PxEdit sa vytvára automatická validácia. Ak zadaná hodnota v komponente PxEdit nekorešponduje z daným typom, neprejde cez automatickú validáciu, je automaticky zastavené ukladanie dát, a za komponentu PxEdit, je vypísaná chybová správa, prečo nedošlo ku uloženiu dát.

Validácia prostredníctvom komponent PxEdit, PxCombobox a pod.


Pri automatickej validácii, a to kontrole dĺžky reťazca, nemusí validácia fungovať celkom správne. Závisí to od toho, aká kódová stránka je nastavená v databáze. Ak v databáze používate kódovú stránku s UTF8, tak v databáze Oracle znaky s diakritikou zaberajú 2 znaky a niektoré špeciálne znaky až 3 znaky v databáze. Preto musíte nastaviť property CharacterCode komponenty PxWebQuery na hodnotu "UTF8", aby správne fungovala validácia dĺžky reťazca. V ďalšom ponúkame výpis konštánt property CharacterCode, pre správnu funkcionalitu validácie dĺžky reťazca. V property CharacterCode je defaultne nastavená hodnota ASCII.

P.č.Konštanta CharacterCode
 1. ASCII
 2. UTF8
 3. UTF16
 4. UTF32
 5. UTF7


Pokiaľ máme v databáze nastavenú kódovú stránku s UTF8, mali by sme to nastaviť do property CharacterCode pred otvorením komponenty PxWebQuery. Viac príklad dole:

wquAdresar.CharacterCode = "UTF8";


Okrem automatickej validácie, môžeme ešte definovať na komponente PxWebQuery, ďalšie doplnkové validácie, ktoré sa definujú cez parameter AddParamValidation.

wquAdresar.AddParamValidation("name", "vtIsNotNull");


V tomto prípade, pokiaľ nebude vyplnená položka "Meno Osoby", tak nedôjde ku uloženiu dát, a pri stlačení tlačítka "Ok", zostaneme v pôvodnom formulári, a za komponentu "Meno Osoby" nám vypíše chybovú hlášku. Viac na obrázku dole:

Validácia prostredníctvom komponent PxEdit, PxCombobox a pod.


Podobne ak na stĺpec právnej formy, tiež uvalíme parameter validácie s typom validácie "vtIsNotNull", pri stlačení tlačítka "Ok", zostaneme v pôvodnom formuláry pokiaľ, nevybereme nejakú hodnotu zo zoznamu "Právnej formy". Príkaz na zadanie parametra validácie pre právnu formu bude vyzerať nasledovne:

wquAdresar.AddParamValidation("idpravnaforma", "vtIsNotNull");


Ak z comboboxu nevybereme žiadnu právnu formu, tak pri ukladaní dát, cez tlačítko "Ok", ostaneme v pôvodnom formulári, a červenými písmenami bude zobrazená príčina prečo nedošlo ku uloženiu formulára, viac obrázok dole.

Validácia prostredníctvom komponent PxEdit, PxCombobox a pod.


Nie je zmyslom, tejto časti webu dopodrobna popisovať prácu s komponentami PxFrameworku, podrobný popis komponent najdete v manuali, ktorý si môžete stiahnuť tu: Download manual pre Px Framework


Definícia príkazu AddParamValidation:

public void AddParamValidation(string sFieldName, string sEnumValidationTest,
            string sRegularExpression, Int32 iMinMaxValue, string sErrorMsg)

public void AddParamValidation(string sFieldName, string sEnumValidationTest,
            Int32 iMinMaxValue)

public void AddParamValidation(string sFieldName, string sEnumValidationTest)


Popis parametrov príkazu AddParamValidation:

sFieldName - názov, meno fieldu, stĺpca na ktorý sa má uvaliť daný typ validácie
sEnumValidationTest - typ validácie, kontroly, ktorá sa má vykonať, popis jednotlivých typov, bude uvedený ďalej
sRegularExpression - výraz pre zadanie validácie cez regulárne výrazy
iMinMaxValue - minimálna, maximálna hodnota výrazu, pri zadanom type fieldu typu integer
sErrorMsg - cez tento výraz, môžeme pri danom type validácie prepísať, alebo zadať novú chybovú správu

Popis jednotlivých typov validácie:

Typ validácie(sEnumValidationTest)Popis
 vtIsNotNull Pri tomto type je testované, či bola zadaná nejaká hodnota, ak nie, bude vrátená chybová správa "Nezadali ste hodnotu !!!"
 vtValidToEmail Pri tomto type je testované, či bola zadaná valídna, správna emailova adresa
 vtValidToMaxNumber Pri tomto type je testované, či bolo zadané menšie číslo ako bolo definované v premennej iMinMaxValue, ak nie vráti chybovú správu
 vtValidToMinNumber Pri tomto type je testované, či bolo zadané väčšie číslo ako bolo definované v premennej iMinMaxValue, ak nie vráti chybovú správu
 vtValidToPSC Pri tomto type je testované, či bolo zadané správne poštové smerové číslo, ak nie vráti chybovú správu
 vtValidToRegularExpression Pri tomto type je testované, či zadaná hodnota spĺňa zadaný regulárny výraz, ak nie vráti chybovú správu
 vtValidToString Pri tomto type je testované, či bolo zadaný čisto len reťazec zložený z písmen, ak nie vráti chybovú správu
 vtValidToTelefon Pri tomto type je testované, či bolo zadané validné telefónne číslo, ak nie vráti chybovú správu
 vtValidToURL Pri tomto type je testované, či bola zadaná valídna hodnota URL, ak nie vráti chybovú správu
 vtValidToCurrency Pri tomto type je testované, či bolo zadané validné číslo typu currency, ak nie vráti chybovú správu
 vtValidToNumber Pri tomto type je testované, či bolo zadané validné, správne celé číslo, ak nie vráti chybovú správu
 vtValidToFloat Pri tomto type je testované, či bolo zadané validné, správne reálne číslo, ak nie vráti chybovú správu
 vtValidToDateTime Pri tomto type je testované, či bol zadaný správny dátum, ak nie vráti chybovú správu
 vtValidToLengthString Pri tomto type je testovaná dĺžka reťazca z hodnotou v premennej iMinMaxValue, ak dĺžka reťazca je väčšia ako dĺžka v premennej iMinMaxValue vráti chybovú správu
 vtIsUnique pri tomto type je testované, či zadaná hodnota je unikátna, jedinečná(Unique) pre ten daný stĺpec


Každý typ validácie, má pevne pridelenú chybovú spravu. Ak by sme chceli túto chybovú spravu zmeniť, ak nám nevyhovuje jej doslovné znenie, môžeme to urobiť nasledujúcim spôsobom:

wquAdresar.AddParamValidation("name", "vtIsNotNull", "", 0, "Nezadali ste meno osoby !!!");


Ďalej si uvedieme príklad validácie cez regulárne výrazy.
Nie je obsahom, tejto knihy popisovať prácu z regulárnymi výrazmi, a to ako sa zostavujú, tu Vás môžeme odkázať len na početné zdroje na internete.

Tabuľku adresár sme rozšírili o ďalší stĺpec, a to o stĺpec na zadávanie PSČ.
Do súboru Adresar.aspx.cs, si validáciu prostredníctvom regulárneho výrazu zadefinujeme nasledovne:

string sRegVyrazToPSC = @"^\d{5}$|^\d{3}\s\d{2}$";
wquAdresar.AddParamValidation("psc", "vtValidToRegularExpression", sRegVyrazToPSC, 0, "Nezadali ste platné poštové smerovacie číslo !!!");


Zadefinovaný regulárny výraz nám umožní zadať 5 miestne číslo, a to buď z medzerou po 3 čísle, alebo bez medzery. Vždy keď chceme validovať cez regulárny výraz, musíme zadať typ validácie "vtValidToRegularExpresion". Ak sme si takto zadefinovali validáciu pre položku PSČ, tak pri nesprávnom zadaní PSČ, sa formulár neuloží, a zastaví sa jeho ukladanie. Za komponentou PSČ nám vráti chybovú správu, ktorú sme si zadefinovali vo výraze "ErrorMsg", viac obrázok.

Validácia prostredníctvom komponent PxEdit, PxCombobox a pod.



Tu nájdete funkčný príklad validácie, kontroly zadaných hodnôt prostredníctvom komponenty PxWebQuery, aj so zdrojovými kódmi. Tento funkčný príklad na tomto webe, beží pod databázou MySQL 5.0.


P.č. Názov príkladu Zdrojové Kódy SQL Script
3.1.11. Adresar.aspx
Adresar.aspx.cs
AddAdresar.aspx
AddAdresar.aspx.cs
InfoAdresar.aspx
InfoAdresar.aspx.cs
SQLScript_MySQL.5.1
SQLScript_MySQL.5.0



Ďalšie články o Px Frameworku:



Nie je zmyslom, tejto časti webu dopodrobna popisovať prácu s komponentami PxFrameworku, podrobný popis komponent najdete v manuali, ktorý si môžete stiahnuť tu: Download manual pre Px Framework


 
  PxWebQuery
  PxSuperGrid
  PxEdit
  PxComboBox
  PxCheckBox
  PxJSDatePicker
  PxDbNavigator
  PxLabel
  PxFlyComboBox
  PxGreatRepeater
  PxChart
  PxUploader
  PxFilterView
  PxDbPopUp
  PxCheckBoxList
  PxRadioButtonList
  PxLogin
  PxSpeedButton
 
 
  AddParamKey()
  AddParamWebQuery()
  AddParamCheck()
  AddParamCheckList()
  AddParamRadioList()
  AddParamValidation()
  AddParamFlyCombo...
  AddParamGreatWeb...
 
 
  AddParamFilter()