HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Letiltódó Submit gombot megvalósító kontrol


Példaprogram letöltése

14352 bájt

A cikkben elkészítünk egy WebControl-t, mely az első megnyomás után automatikusan letiltódó Submit gombot valósít meg. A kontrol funkciói nagyon hasznosak lehetnek, amikor Web lapunkon a felhasználónak egy űrlapot kell kitölteni és elküldeni. A kérés és a szerver válaszát képező HTML oldal megérkezése közt hosszú másodpercek telhetnek el, mialatt a felhasználó többször is a gombra kattinthat. A megoldást jelentő funkciókat most egy komponensbe gyúrjuk.

Mellékelt példa megnyitása előtt szükséges egy DisabledSubmit 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.
A Submit gombot letiltva megakadályozhatjuk, hogy ugyanaz a kérés többször is eljusson a szerverhez. Most ezeket a funkciókat egy komponensben valósítjuk meg, kiegészítve azt egy olyan property-vel, melyben megadható az a szöveg, mely a letiltott nyomógomb feliratát képezi a letiltott állapotban.
A kontrol publikus, felhasználó által megadható property-je a következő módon deklarálható. A property egy privát változó értékét állítja.
private string FText = "Kérem, várjon...";
...
[Category("Tulajdonság"), DefaultValue("Kérem, várjon...")] 
public string DisabledText
{
  get
  {
    return FText;
  }
  set
  {
    FText = value;
  }
}
A kontrol konstruktora beállítja a kezdeti méreteit.
public DisabledSubmitControl()
{
  Height = 25;
  Width = 140;
}
A kontrol egy Button osztályú gyermekkomponenst tartalmaz. A létrehozását a CreateChildControls függvény intézi. A gomb letiltó funkcióját egy JavaScript kód valósítja meg, mely egy példányban kerül fel a Web lapra. Ennek eredményeképpen a komponensnek rendelkeznie kell egy egyedi azonosítóval, hogy több komponens Form-ra helyezésekor is tudja a JavaScript függvény, hogy melyikről van szó.
protected override void CreateChildControls()
{
  subButton = new Button();
  subButton.ID = "sb_" + UniqueID;
  ...
A letiltást megvalósító funkció a gomb onClick eseményekor lefutó SubmitFrom függvényben van implementálva. A függvény paraméterként a gomb azonosítóját kapja meg. Hogy ez megvalósuljon a gomb objektumhoz egy attribútumot kell adnunk.
  subButton.Attributes.Add("onclick","SubmitForm(sb_"+ UniqueID+")");
  Controls.Add(subButton);
}
A kontrol OnInit függvényében pedig elkészítjük a SubmitForm JavaScript függvényt.
protected override void OnInit(EventArgs e)
{
  base.OnInit(e);
  if (Page != null)
  {
    StringBuilder sb = new StringBuilder();
    sb.Append("<script language=\"javascript\">\n");
    sb.Append("function SubmitForm(obj)\n");
    sb.Append("{\n");
A kontrol létrehozott DisabledText property-je ekkorra már beállítja a FText nevű privát változót, így az bekerülhet a JavaScript függvény kódjába.
...
sb.Append("  obj.value = '" + FText + "';\n");
sb.Append("  obj.disabled = true;\n");
sb.Append("  document.forms[0].submit();\n");
A script szövegét lezárva a RegisterClientScriptBlock függvény hívásával helyezzük el azt a web oldalon.
sb.Append("}\n");
sb.Append("</script>");
Page.RegisterClientScriptBlock("sub",sb.ToString());
E függvény első paramétereként egy tetszőleges azonosítót adunk, másodikként pedig a script szövegét. A függvény biztosítja azt, hogy több kontrol használata esetén is csak egy példányban kerüljön a web lapra a script. Teszi ezt úgy, hogy ellenőrzi, hogy az itt első paraméterként megadott azonosító létezik-e már vagy még sem.
A project fordítása után a kontrol kész. 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 példa alkalmazás egy általunk készített kontrolt tartalmaz, melyre rákattintva elindul egy kérés a szerver felé, majd visszatérve üdvözli a felhasználót a TextBox komponensbe beírt szövegnek megfelelően. A gomb megnyomása és az üdvözlőszöveg megjelenéséig természetesen a gomb le van tiltva.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 635. 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 |