C# - Button Web szerver kontrol

ASP.NET szintaxis 3. rész

forráskód letöltése
Sorozatunk harmadik részében a Button kontrol tulajdonságait vizsgáljuk meg. E kontrol felhasználásával egy nyomógombot helyezhetünk el a web oldalon. E gombhoz rendelhetünk speciális paramétereket, de rendelkezhetünk akár arról is, hogy a beviteli mezők automatikus ellenőrzése elmaradjon-e a gomb lenyomásakor vagy sem.
A HyperLink szintaxisa a következő:
<asp:Button id="MyButton"
     Text="label"
     CommandName="command"
     CommandArgument="commandargument"
     CausesValidation="true | false"
     OnClick="OnClickMethod"
     runat="server"/>
Text
Osztály: System.Web.UI.WebControls.Button
public string Text {get; set;}
Itt adható meg a nyomógombra kerülő felirat sztringként.
CommandName
Osztály: System.Web.UI.WebControls.Button
public string CommandName {get; set;}
Minden nyomógombhoz rendelhetünk egy tetszőleges parancsot. Ez egy általunk választott egyedi sztring lehet. Ennek értékét a Command eseménynél használhatjuk majd fel. E property-t akkor célszerű használni, ha web oldalon több nyomógombot helyeztünk el, melyekhez más és más funkciót szeretnénk rendelni.
CommandArgument
Osztály: System.Web.UI.WebControls.Button
public string CommandArgument {get; set;}
Minden nyomógombhoz rendelt parancs érték mellé egy parancs paraméter értéket is rendelhetünk. Ezt szintén a Command eseménynél használhatjuk majd fel.
CausesValidation
Osztály: System.Web.UI.WebControls.Button
public bool CausesValidation {get; set;}
A gomb lenyomásakor futó ellenőrzést engedélyezhetjük/tilthatjuk. Ha helyezünk a web oldalunkra olyan nyomógombokat, melyeknek nem az a szerepük, hogy a bevitt adatokat továbbítsák a szerverünk felé, akkor célszerű az ellenőrzést kikapcsolni. Ha ezt nem tennénk és a web oldalon van valamilyen Validator kontrol is, akkor ezek automatikusan elvégeznénk az ellenőrzést, mely ilyen esetben még nem kívánatos hatást eredményezne.
Click
Osztály: System.Web.UI.WebControls.Button
public event EventHandler Click;
Click esemény jön létre, amikor a gombra kattint a felhasználó.
Command
Osztály: System.Web.UI.WebControls.Button
public event CommandEventHandler Command;
Ha a gombnál használtuk a CommandName és CommandArgument property-ket, valamint a gomb lenyomásakor szükségünk lenne ezek értékére, akkor ne a Click eseményt, hanem a Command eseményt használjuk fel. Ez szintén akkor jön létre, ha a gomb lenyomásra kerül, de itt a paraméterként kapott CommandEventArgs osztály property-jeiből megtudhatjuk a beállított értékeket. A CommandEventArgs osztály tartalmaz egy CommandName és CommandArgument property-t, melyeknek értékei egyeznek a nyomógomb azonos nevű property-jeinél megadott értékekkel.
A példaprogram
Nézzük most a gyakorlatban miként is használhatók ezek a lehetőségek.
Feltettünk a web lapra két TextBox-ot, melyeken keresztül két adatot szeretnénk bekérni a felhasználótól. E két TextBox adattal való feltöltéséhez két nyomógombot is elhelyeztünk, melyek felirata 1 és 2. Ezek lenyomásával a TextBox-ba adat kerül. Egy harmadik gomb is helyet kapott OK felirattal. Ennek azt a szerepet szántuk, hogy a felhasználó elküldhesse az adatokat szerverünk felé.
Egyik TextBox sem lehet üres, mikor a felhasználó az OK gombra kattint. Ennek ellenőrzésére két RequiredFieldValidator kontrolt is feltettük a web oldalra, melyeket a két TextBox-hoz kötöttünk. Ha most az 1 és 2 feliratú gombnál a CausesValidation property-t nem állítanák hamisra, akkor már e gombok lenyomásakor megtörténne a RequiredFieldValidator általi ellenőrzés, ami nyilván nem lenne megfelelő. Ezen ellenőrzésre csak az OK gomb lenyomásakor van szükségünk, így a három gombból csak ennél hagyjuk meg a CausesValidation property-t igaz értéken.
A RequiredFieldValidator működésének ellenőrzésére nyomjuk le a következő sorrendben a gombokat: 1 OK. Mivel a 2-es gombot nem nyomtuk le, így a TextBox2-ben még nincs szöveg, ezért a RequiredFieldValidator hibát jelez.
Tesztképpen állítsuk az 1 feliratú gomb CausesValidation property-jét igaz értékre. Futtassuk az alkalmazást és kattintsunk a 1-es gombra. Az eredmény jól látható: futott a RequiredFieldValidator, hibát jelzett és így nem történt meg a textBox1-nek az értékadás, amit eredetileg szerettünk volna elérni a 1-es gomb segítségével.
A 2-es gombnál használtuk a CommandName és CommandArgument property-ket, így ennél a Command eseményhez hoztuk létre egy eseménykezelőt.
    private void Button2_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
    {
      TextBox2.Text = e.CommandName + ": " + e.CommandArgument;
    }
Az eseménynél kapott paraméterből kiolvasható a megadott CommandName és CommandArgument property.

ASP.NET szintaxis cikksorozat