HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Saját Webes ellenőrző kontrol létrehozása


Példaprogram letöltése

13484 bájt

A Visual Studio.NET kontrolpalettáján találhatunk néhány kontrolt, melyek a megadott kontrolok meghatározott property-jeinek tartalmát ellenőrzik. Ezek a kontrolok a BaseValidator ősosztály leszármazottai. Cikkünkben bemutatjuk annak lehetőségét, hogy miként írhatunk saját ellenőrző kontrolt úgy, hogy kontrolunk ebből az osztályból származik, örökölve a hasznos sajátosságokat.

Mellékelt példa megnyitása előtt szükséges egy ValidatorTest nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
Az ellenőrző kontrolok sajátossága, hogy a BaseValidator osztályból származnak, így rendelkeznek az IVaidator interfész tulajdonságaival.
A kontrolokat a Weblapra helyezzük, és megadjuk számukra – a ControlToValidate property-ben - azt a kontrolt, melynek tartalmát ellenőrizni kell bizonyos szabály szerint. Az ErrorMessage property-ben kell megadnunk azt a szöveget, amely megjelenik, mint figyelmeztető üzenet helytelen adatbevitel esetén.
Jellemző tulajdonságuk, hogy amennyiben nem megfelelő az ellenőrzendő kontrol tartalma, a gomb lenyomása nem eredményez PostBack eseményt, míg ellenkező esetben igen.
A létrehozandó kontrolunkban a BaseValidator osztály három virtuális metódusát kel felülírnunk ahhoz, hogy működése megfelelő legyen:
ControlPropertiesValid
Osztály: BaseValidator
protected virtual bool ControlPropertiesValid();
Meghatározza, hogy a ControlToValidate property-ben megadott kontrol valós objektumot takar, vagy sem.
Visszatérési érték
Amennyiben a kontrol valós, akkor értéke TRUE, egyébként FALSE.
EvaluateIsValid
Osztály: BaseValidator
protected abstract bool EvaluateIsValid();
Felülírva ellenőrzi a beírt adat helyességét.
Visszatérési érték
Ha a beírt adat helyes, akkor értéke TRUE, egyébként FALSE.
OnPreRender
Osztály: BaseValidator
protected override void OnPreRender(EventArgs e);
Render előtti műveletek elvégzésére szolgáló metódus.
Paraméterek
EventArgs e
Információs paraméter.
A kontrol készítését tehát ezen metódusok felülírásával kezdjük. A megadott kontrol ellenőrzése a következőképpen történik:
protected override bool ControlPropertiesValid() 
{
  if (this.FindControl(this.ControlToValidate) is TextBox) 
  {
    return true;
  } 
  else 
  {
    return false;
  }
}
Kliens-oldalon valósítjuk meg az ellenőrzést, így a következő metódust TRUE visszatérési értékkel írjuk felül:
protected override bool EvaluateIsValid() 
{      
  return true;
}
Amennyiben engedélyezve van, akkor a lapra helyezzük az ellenőrző szkript kódot. Ezt a Controller metódusban valósítottuk meg:
protected override void OnPreRender(EventArgs e) 
{
  if (this.EnableClientScript) 
  { 
    this.Controller();
  }
  base.OnPreRender(e);
}
A Controller metódusban a saját kontrolunk EVALUATIONFUNCTION attribútumaként megadjuk a lapra helyezendő JavaScript függvény nevét, jelezve, hogy ebben helyeztük el az ellenőrző algoritmust:
protected void Controller() 
{
  this.Attributes["evaluationfunction"] = "validateWord";
A script kód szövegét egy StringBuilder objektumban tároljuk:
  StringBuilder text = new StringBuilder();
  ...
Majd a Page osztály RegisterClientScriptBlock statikus metódusával írjuk a Weblapra:
  this.Page.RegisterClientScriptBlock("goodword", text.ToString() );
}
A JavaScript kód ellenőrzi, hogy a TextBox kontrol Text property-jébe írt név megegyezik-e a három nevet tartalmazó tömb valamelyik elemével. Ha igen, akkor a függvény visszatérési értéke TRUE, egyébként FALSE. FALSE érték esetén jelenik meg a kontrol szövegeként az ErrorMessage property-ben megadott karakterlánc.
Felhasználása előtt a kontrolt fel kell tenni a ToolBox-ra a szokásos módon: kattintsunk a ToolBox valamely lapján az egér jobb gombjával, majd a megjelenő menüből válasszuk ki a Customize ToolBox pontot, a megjelenő ablakban a .NET Frameworks Components fület. A Browse gombbal keressük elő az imént létrehozott .DLL-t.
A WebForm1.aspx lapra két TextBox kontrolt helyeztünk fel, egyikben egy jó adattal, másikban egy nem megfelelő névvel. A lapra feltett egyetlen Button kontrolra kattintva az ellenőrzést mindkét kontrol elvégzi, és az egyik megjeleníti a hibaüzenetet.
Ha vetünk egy pillantást a Weblapunk forrására, akkor láthatjuk, hogy a Button kontrolunk HTML-kódja gazdagodott egy attribútummal, melynek eredményeképpen az ellenőrzőkontrolok elvégzik a munkájukat:
<INPUT ... onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " ...>
Ha script függvényként létezik a Page_ClientValidate elem, akkor végrehajtja. A függvény kódja elérhető a Weblapunkról, hála a kontrol ősosztályának:
function Page_ClientValidate()
{
  var i;
  for (i = 0; i < Page_Validators.length; i++)
  {
    ValidatorValidate(Page_Validators[i]);
  }
  ValidatorUpdateIsValid();    
  Page_BlockSubmit = !Page_IsValid;
  return Page_IsValid;
}
Minden ellenőrző kontrollal paraméterében meghívja a ValidatorValidate függvényt, mely elvégzi az ellenőrzést a létrehozott script függvényünkkel.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 195. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |