Podstawowe kontrolki serwerowe
ASP.NET – obsługa zdarzeń
Cele ćwiczenia
- Zapoznanie z podstawowymi kontrolkami
ASP.NET.
- Zapoznane z obsługą zdarzeń w
ASP.NET.
- Zapoznanie z możliwościami
programowego dodawania kontrolek.
Dodawanie z wykorzystaniem kontrolek ASP.NET
- Na stronie umieść prosty
program dodający, po kliknięciu przycisku, dwie liczby umieszczone w
kontrolkach tekstowych, wynik powinien się pojawić w trzeciej kontrolce
tekstowej. W aplikacji należy zastosować kontrolki ASP.NET.
- Na listingu 1 umieszczono kod
obsługi zdarzenia dodający liczby zawarte w kontrolkach TextBox1 i Text2 i umieszcza wynik w TexBoxt3.
Listing 1. kod obsługi zdarzenia dodający liczby zawarte w
kontrolkach TextBox1 i TextBox2 i umieszcza wynik
w TextBox3.
protected void Button1_Click(object
sender, EventArgs e)
{
TextBox3.Text
= (Convert.ToDouble(TextBox1.Text) + Convert.ToDouble(TextBox2.Text)).ToString();
}
- Przetestuj działanie strony.
- Zapoznaj się w przeglądarce ze
źródłem strony i porównaj z kodem w Visual Studio.
Wydruk parametrów żądania w tabeli
- Umieść na stronie z poprzednim
zadaniem standardową kontrolkę ASP.NET Table – Table1.
- Dodaj kod obsługi zdarzenia Page_Load
drukujący parametry żądania w tabeli Table1.
Listing 2. Wydruk
parametrów żądania w tabeli Table1
// Wydruk parametrów żądania w tabeli
Table1
Table1.BorderStyle = BorderStyle.Double;
Table1.BackColor =
System.Drawing.Color.LightGray;
Table1.GridLines = GridLines.Both;
TableRow y;
TableCell x;
y = new TableRow(); // wiersz
nagłóweka tabeli
y.BackColor = System.Drawing.Color.Gray;
x = new TableCell();
x.Text = "<span style=\"font-size:
large\">Nr</span>";
y.Cells.Add(x);
x = new TableCell();
x.Text = "<span style=\"font-size:
large\">Nazwa</span>";
x.HorizontalAlign = HorizontalAlign.Center;
y.Cells.Add(x);
x = new TableCell();
x.Text = "<span style=\"font-size:
large\">Wartość</span>";
x.HorizontalAlign = HorizontalAlign.Center;
y.Cells.Add(x);
Table1.Rows.Add(y); // dodane nagłówka
for (int i = 0; i
< Request.Params.Count; i++)
{
y = new TableRow();
x = new TableCell();
x.Text =
i.ToString();
y.Cells.Add(x);
x = new TableCell();
x.Text =
Request.Params.GetKey(i);
y.Cells.Add(x);
x = new TableCell();
x.Text =
Request.Params[i];
y.Cells.Add(x);
Table1.Rows.Add(y);
}
- Przetestuj stronę i zapoznaj
się z wydrukowanymi parametrami żądania oraz ze źródłem strony w
przeglądarce.
- Dodaj do strony skrypt lub kod
w metodzie Page_Load
drukujący komunikat o trybie otwarcia strony, listing 3.
Listing 3. Kod skryptu
umieszczającego komunikat o trybie otwarcia strony
<%
if
(Page.IsPostBack)
Response.Write("Postback");
else
Response.Write("Pierwsze
wywołanie strony");
%>
- Dodaj do strony przycisk, który
powoduje przeładowanie strony i przetestuj jej działanie.
- Spróbuj umieścić komunikat o
trybie otwarcia strony w kontrolce typu Label.
Program kalkulatora z wykorzystaniem kontrolek
ASP.NET
- Na nowej stronie utwórz
aplikację kalkulatora.
- Aplikacja powinna zawierać
- 10 przycisków numerycznych,
- 4 przyciski działań
arytmetycznych,
- przycisk „=”,
- jeden wyświetlacz, tak jak
kalkulator.
- Kontrolki należy umieść na
panelu.
- Do przechowywania stanu
kalkulatora należy dodać kontrolki, które w trakcie testowania programu
kalkulatora będą widoczne i ukryte po zakończeniu.
- Do obsługi wielu zdarzeń można
użyć jednej funkcji np. przedstawionej na listingu 4.
Listing 4. Kod obsługi
zdarzenia, który rozpoznaje napis na przycisku i na jego podstawie albo
dopisuje odpowiednią cyfrę do wyświetlacza, albo rozpoczyna jedno z czterech
działań arytmetycznych.
protected void Button_Cyfra_Click(object
sender, EventArgs e)
{
Button x = (Button)sender;
switch (x.Text)
{
case
"+":
case
"-":
case
"*":
case
"/":
TextBoxX.Text =
TextBox1.Text;
TextBox1.Text = "0";
TextBoxOperacja.Text =
x.Text;
break;
default:
TextBox1.Text = Convert.ToDouble(TextBox1.Text +
x.Text).ToString();
break;
}
}
- W celu obserwacji parametrów
żądania w trakcie testowania aplikacji
- dodaj do strony kontrolkę Table1,
- w funkcji obsługi zdarzenia Page_Load umieść
kod z listingu 2 drukujący parametry żądania, w tabeli Table1.
- Przetestuj działanie strony,
zapoznając się z parametrami żądania i źródłem strony w przeglądarce.
Dynamiczne tworzenie tabeli i wypełnienie jej
kontrolkami
- Umieść na stronie standardową
kontrolkę ASP.NET Table i przycisk.
- W funkcji obsługi zdarzenia
kliknięcia przycisku umieść kod dodający komórki do tabeli i umieszczający
w komórkach kontrolki tekstowe – listing 5.
Listing 5. Dynamiczne
wypełnianie tabeli Table1
komórkami zawierającymi nienazwane kontrolki tekstowe
int lw = Convert.ToInt16(TextBox1.Text);
int lk = Convert.ToInt16(TextBox2.Text);
int i, k;
for (i = 0; i < lw; i++)
{
TableRow y = new TableRow();
for (k = 0; k < lk; k++)
{
TableCell x = new TableCell();
y.Cells.Add(x);
x.Controls.Add(new TextBox());
}
Table1.Rows.Add(y);
}
- Dodaj kolejny przycisk i
sprawdź, czy tabela zniknie po przeładowaniu strony.
- Przemieść kod wypełniania
tabeli do metody Page_Load
i sprawdź czy tabela zniknie po przeładowaniu strony.
- Dodaj do strony przycisk
wypełniający kontrolki tekstowe kolejnymi liczbami naturalnymi.
Listing 6. Wypełnianie komórek
tekstowych w tabeli Table1
napisem Ala ma kota
for (int i = 0; i < Table1.Rows.Count; i++)
for
(int k = 0; k < Table1.Rows[i].Cells.Count;
k++)
((TextBox)Table1.Rows[i].Cells[k].Controls[0]).Text
= "Ala ma kota";
- Dodaj do strony wydruk
parametrów żądania – listing 2.
- Sprawdź czy nienazwane
kontrolki tekstowe przemieszczają się między komórkami tabeli, gdy zmienia
się liczba kolumn i wierszy tabeli.
- Przetestuj działanie strony,
zapoznając się z parametrami żądania i źródłem strony w przeglądarce.
- Do kodu z listingu 5 dodaj
nadawanie identyfikatorów kontrolkom tekstowym.
TextBox TT = new TextBox();
TT.ID = "Tekst_wiersz"
+ i.ToString() + "kom" +
k.ToString();
x.Controls.Add(TT);
- Sprawdź czy nazwane kontrolki
tekstowe przemieszczają się między komórkami tabeli, gdy zmienia się
liczba kolumn i wierszy tabeli.
Projekt
- Aplikacja kalkulatora.