Kontrolki list, kolejność zdarzeń i śledzenie
Cele ćwiczenia
- Zapoznanie z kontrolkami
wywodzącymi się z klasy ListControls.
- Zapoznanie z zdarzeniami
odsyłającymi stronę na serwer.
- Zapoznanie z drzewem kontrolek.
- Zapoznanie z kolejnością
zdarzeń.
- Zapoznanie z metodami śledzenia
aplikacji.
Śledzenie na poziomie strony, odsyłanie strony (PostBack)
- Utwórz nową witrynę w lokalnym
systemie plików.
- Ustaw atrybut Trace="true" strony Default.aspx, co spowoduje, że w przeglądarce u dołu strony powinna pojawić się
tabela wyników śledzenia, takie ustawienie powinno być na wszystkich stronach
w aplikacji (witrynie).
·
Atrybut można ustawić w kodzie strony
zmieniając skrypt w pierwszej linii lub w okienku właściwości (Properties)
obiektu DOCUMENT.
- Umieść na stronie kontrolki TextBox i Button.
- Ustaw atrybut kontrolki
tekstowej AutoPostBack = true.
- Przetestuj działanie strony,
sprawdź czy po zmianie tekstu w kontrolce tekstowej strona jest odsyłana.
- Zapoznaj się w przeglądarce ze
źródłem strony i porównaj go z kodem w Visual Studio, znajdź kod
odpowiedzialny za odesłanie strony po zmianie tekstu w kontrolce tekstowej.
- Dodaj
obsługę zdarzenia ButtonClick, w
funkcji obsługi zdarzenia dodaj polecenie Trace.Warn("Zdarzenie","Kliknięcie przycisku");
- Uruchom stronę i znajdź komunikat
o kliknięciu w dzienniku śledzenia.
Kontrolki list i kolejność zdarzeń
Najważniejsze właściwości klasy ListControl
- Items – jest
kolekcją wszystkich pozycji listy, które są obiektami klasy ListItem.
- SelectedIndex,
SelectedItem i SelectedValue – wskazują na
zaznaczone pozycje o najniższym indeksie (SelectedIndex
= -1 oznacza, że żadna pozycja nie została wybrana).
- AppendDataBoundItems
– właściwość pozwalająca na dołączenie pozycji z bazy danych do bieżącej kolekcji
Items (true – dołączanie, false – zastępowanie).
- SelectionMode
– tryb wyboru Single –
pojedynczy, Multiple –
wielokrotny – tylko dla ListBox.
- AutoPostBeck
– określa czy po zmianie wyboru dane strony powinny być automatycznie
wysłane do serwera.
Unikalne zdarzenie SelectedIndexCharged zachodzi, gdy
zostanie zmieniony wybrany element listy.
Najważniejsze metody i właściwości kolekcji Items
- Add(), Insert() – dodawanie pozycji do
listy.
- Remove(), RemoveAt() – usuwanie pozycji z
listy.
- Count –
aktualna liczba pozycji.
Przykład dodawania do listy nowej pozycji.
RadioButtonList1.Items.Add(new
ListItem("Tekst", "Value");
Właściwość ListItem
- Value –
wartość.
- Text –
wyświetlany tekst.
- Selected –
wskazuje czy element jest zaznaczony.
- Enabled –
dostępność kontrolki, true –
włączona, false – wyłączona.
- Attributes
– kolekcja atrybutów.
Polecenia
- Dodaj do witryny nową stronę o
nazwie listy.aspx.
- Dodaj do strony przycisk i
kontrolki:
- CheckBoxList,
- DropDownList,
- ListBox,
- RadioButtonList.
- Dodaj do kontrolek dowolne
pozycje (ListItem) list Items.
- Dodaj do kontrolek obsługę
zdarzeń SelectedIndexChanged
, w funkcjach obsługi zdarzeń umieść polecenia Trace.Warn() wydruku komunikatów
identyfikujących zdarzenia.
- Uruchom stronę dokonaj zmian w
kontrolkach i kliknij przycisk.
- Znajdź komunikaty w dzienniku
śledzenia i odpowiedz w jakiej kolejności obsługiwane są zdarzenia (czy
zgodnie z kolejnością wystąpienia zdarzeń w przeglądarce, czy w kolejności
występowania kontrolek w drzewie kontrolek?).
- Ustaw właściwość kontrolek AutoPostBack = true i ponownie
sprawdź kolejność obsługi zdarzeń.
Wykorzystanie wybranej pozycji na liście w
kodzie programu
- Dodaj do strony kontrolki Label a do obsługi zdarzeń SelectedIndexChanged kontrolek
list dodaj kod umieszczający w kontrolkach Label
informację o wybranych elementach list.
- Przetestuj działanie strony.
Programowe dodawanie elementów list
- Dodaj nowy przycisk, w obsłudze
zdarzenia ButonClick umieść
kod dodawania pozycji do list kontrolek – metodą Items.Add().
- Przetestuj dodawanie pozycji do
list kontrolek.
Dodawanie pozycji do list z bazy danych
- Dodaj do aplikacji plik bazy
danych
·
Add New Item –>
SQL Server Database.
- W bazie danych utwórz tabelę pozycje, która będzie zawierała zbiór
elementów list.
·
Tabela musi zawierać co najmniej dwie kolumny do przechowywania
atrybutów pozycji list Value i Text.
·
Tabela może zawierać dodatkowe kolumny do przechowywania atrybutu
Text w różnych wariantach,
np. w różnych językach narodowych – coś takiego można wykorzystać lokalizując
aplikację.
- Wpisz do tabeli kilka pozycji
(wierszy).
- Na nowej stronie umieść
kontrolki list.
- Skonfiguruj kontrolki list tak,
aby pobierały elementy list z utworzonej tabeli pozycje.
- Choose a Data Source –> Select a data Source – > New data
source.
- Skonfiguruj łańcuch połączenia
do utworzonej bazy danych.
- Wybierz co najmniej dwie
kolumny z tabeli pozycje jako
źródło danych.
- Wybierz, która kolumna zawiera
atrybuty Text, a która atrybuty Value kontrolk.i
- Przetestuj działanie kontrolek dla dwóch wartości
(true i false) właściwości
AppendDataBoundItems
– właściwość pozwalająca na dołączenie pozycji z bazy danych do bieżącej
listy Items (true – dołączanie, false – zastępowanie).
Śledzenie na poziomie aplikacji
- Skonfiguruj śledzenie na
poziomi aplikacji,
- przy pomocy narzędzia do
administrowania witryną sieci Web ASP.NET Configuration lub
- wpisz ręcznie następującą
dyrektywę do sekcji <system.web> pliku Web.config:
<trace enabled="true" localOnly="false" pageOutput="true" requestLimit="20" />
- Uruchom dowolną stronę
aplikacji, wykonaj kilka operacji następnie otwórz stronę trace.axd
w katalogu głównym aplikacji.
- Zapoznaj się ze śladem aplikacji.
Kontrolka BulletedList
- Umieść na stronie kontrolkę BulletedList.
- Dodaj do niej listę wartości i przetestuj jej działanie.
- Skonfiguruj kontrolkę tak, aby
pobierała pozycje listy z tabeli pozycje
bazy danych i przetestuj kej działanie.
- Określ różnice i podobieństwa BulletedList z pozostałymi kontrolkami list.
Wydruk przechwyconego wyjątku w dzienniku śledzenia
- Umieść na stronie obsługę zdarzenia zawierającą błąd,
który będzie przechwycony w bloku instrukcji
try { kod powodujacy
wystąpienie wyjątku }
catch(Exception
ex) { Trace.Warn("Kategoria","Komunikat",ex); }.
- Dodaj
wydruk informacji o błędzie w dzienniku śledzenia instrukcją
Trace.Warn("Kategoria","Komunikat",wyjątek);
- Uruchom stronę spowoduj błąd i znajdź komunikat w
dzienniku śledzenia.