Kontrolki serwerowe dostępne w ASP.NET 2.0

Transkrypt

Kontrolki serwerowe dostępne w ASP.NET 2.0
ASP.NET Starter Kit
Igor Kruk, Artur Mościcki
Kontrolki serwerowe
dostępne w ASP.NET 2.0
T
echnologia ASP.NET bardzo szybko zyskała sobie dużą grupę zwolenników, którzy doceniają jej szerokie możliwości. Programiści –
deweloperzy cenią tę technologię za szybkość tworzenia aplikacji, wygodę programowania, a przede wszystkim bogactwo kontrolek, które im oferuje. Kontrolki serwerowe dostępne w technologii ASP.NET bardzo uprościły i uporządkowały tworzenie aplikacji internetowych. Wyeliminowały w znacznym stopniu konieczność żmudnego pisania, ewentualnie generowania (jak
w PHP) tagów HTML. ASP.NET 2.0 oferuje nam około
50 różnych kontrolek, które umożliwiają wykonywanie
rozmaitych operacji od wyświetlania tekstu do generowania struktury nawigacji po aplikacji. W artykule tym
przyjrzymy się bliżej możliwościom tych kontrolek.
Toolbox
Wszystkie kontrolki są dostępne w oknie Toolbox, które domyślnie znajduje się w lewej części obszaru roboczego Visual Studio 2005. Jeśli chcemy mieć większy
obszar roboczy możemy zmusić Visual Studio 2005 do
ukrycia tego okna i wyświetlania tylko wtedy, gdy najedziemy na jego nazwę kursorem myszy (w momencie, kiedy będziemy chcieli skorzystać z jakiejś kontrolki). W tym celu klikamy ikonę Auto Hide znajdującą się obok nazwy okna. Kontrolki serwerowe znajdujące się w oknie Toolbox są podzielone na kilka sekcji:
Standard, Data, Validation, Navigation, Login oraz WebParts. Podział ten został przedstawiony na Rysunku 1.
Każda kontrolka serwerowa ma swoją unikatową (na
danej stronie aspx) nazwę (identyfikator), który jest zapisany we właściwości ID kontrolki. Chcąc odwołać się
do danej kontrolki z poziomu kodu wpisujemy jej identyfikator, a następnie po kropce „.” wybieramy właściwość lub metodę przypisaną do danej kontrolki.
Warto zwrócić uwagę na znaczniki generowane
w kodzie strony po umieszczeniu na niej kontrolki serwerowej. Każda kontrolka serwerowa posiada znacznik
otwierający (rozpoczynający się od „<asp:”) i zamykający („</asp:”). Przykładowo po umieszczeniu na stronie kontroli Label kod strony powinien wyglądać tak jak
na Listingu 1. Widzimy w nim linię odpowiadającą za
umieszczenie na stronie kontrolki Label. W linii tej znajIgor Kruk i Artur Mościcki są studentami 5 roku informatyki na Wydziale Nauk Ścisłych Akademii Podlaskiej
w Siedlcach. Ich zainteresowania obejmują programowanie i bazy danych. Są również autorami książki
„Oracle 10g i Delphi. Programowanie baz danych”.
Kontakt z autorami:
[email protected], [email protected].
26
www.sdjournal.org
Rysunek 1. Podział okna Toolbox na sekcje kontrolek
serwerowych
duje się identyfikator kontrolki (Label1), oraz domyślny tekst wyświetlany przez tą kontrolkę. Szczególnie
ważny jest atrybut runat=”server”, który decyduje właśnie, że dana kontrolka jest kontrolką serwerową, tzn.
uruchamianą (obsługiwaną) po stronie serwera. Jeśli
uruchomimy teraz tą stronę w przeglądarce i przyjrzymy się jej źródłu zauważymy pewne zmiany (Listing 2).
Przede wszystkim zmieniony został znacznik form.
Usunięty został atrybut runat, a ponadto zostały dodane 3 nowe atrybuty. Pierwszy określa nazwę formularza, drugi ustawia parametr Method na post, trzeci dodaje docelową (bieżącą stronę), do której mają zostać
wysłane dane z tego formularza. Poza tym do formularza dodana została ukryta kontrolka <input>, która służy do zapamiętywania po stronie serwera stanu kontrolek. Zwróćmy także uwagę, że znaczniki <asp:> zostały zastąpione odpowiadającymi im znacznikami HTML,
dzięki czemu przeglądarka może poprawnie wyświetlić stronę.
Przyjrzyjmy się teraz bliżej kontrolkom z poszczególnych sekcji okna Toolbox.
Standard
Kontroli dostępne w sekcji Standard są najprawdopodobniej najczęściej wykorzystywanymi przy tworzeniu aplikacji internetowych. Znajdują się w niej następujące kontrolki:
•
Label – etykieta umożliwiająca wyświetlanie tekstu. Oczywiście tekst możemy umieścić na stronie bez wykorzystania kontrolki Label, ale wówczas nie będziemy mogli sie do niego odnieść
(zmienić, usunąć itp.) z poziomu kodu.
Software Developer’s Journal Extra! 20
•
Listing 1. Kod strony aspx z umieszczoną na niej
kontrolką Label
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/
•
•
/EN" "http://www.w3.org/TR/xhtml1/DTD/
xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
•
•
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:label id="Label1" runat="server"
text="Label"></asp:label>
•
</div>
</form>
</body>
</html>
•
•
•
•
•
•
•
•
TextBox – pole do wprowadzania tekstu. Dzięki właściwości TextMode możemy sprawić aby kontrolka ta służyła do
wprowadzania hasła lub umożliwiała wpisywanie tekstu
w wielu wierszach.
Button – przycisk, służący do wywoływania zdarzenia.
Możemy zdefiniować metodę Click(), która zostanie uruchomiona po kliknięciu przycisku. Wówczas obsługa tego zdarzenia będzie się odbywać na tej samej stronie, na
której znajduje się przycisk. Możemy również skorzystać
z właściwości PostBackUrl, która pozwala określić, na którą
stronę zostanie przesłane zdarzenie kliknięcia przycisku.
LinkButton – link, którego naciśnięcie powoduje taki sam
efekt, jak wciśnięcie przycisku.
ImageButton – rysunek, który pełni rolę przycisku. Nazwę
pliku, do którego odwołuje się ta kontrola definiujemy we
właściwości ImageUrl.
HyperLink – standardowy odsyłacz używany do przechodzenia pomiędzy stronami. Stronę docelową definiujemy we właściwości NavigateUrl. Kontrolka ta może także
przyjąć postać rysunku – w tym celu musimy zdefiniować
właściwości ImageUrl.
DropDownList – kontrolka pełniąca rolę menu rozwijanego. Możemy do niej podpiąć źródło danych (kontrolkę SqlDataSource, która została opisana w dalszej części artykułu), lub zdefiniować ręcznie jej elementy. W tym celu zaznaczamy kontrolkę DropDownList, a następnie klikamy
na ikonę strzałki, która pojawia się w jej prawym górnym
rogu. Jeśli chcemy wpisać opcje ręcznie wybieramy Edit
Items, jeśli natomiast podpisanym źródło danych wybieramy Choose Data Source. Ponadto kontrola ta ma właściwość AutoPostBack (domyślnie ustawione na false). Jeśli chcemy, aby o zmianie stanu kontrolki zostały poinformowane inne kontrolki znajdujące się na stronie musimy
ustawić tę opcję na true.
ListBox – kontrolka podobna do poprzedniej z tą zmianą,
że w tej wszystkie opcje są stale widoczne.
CheckBox – pole wyboru.
Software Developer’s Journal Extra! 20
•
•
•
•
CheckBoxList – lista pól wyboru, do której ponownie w łatwy sposób możemy podpiąć źródło danych. Kontrolkę tą
możemy użyć przy projektowaniu ankiet, w których dajemy użytkownikowi możliwość wielokrotnego wyboru.
RadioButton – pole umożliwiające wybór tylko jednej opcji.
RadioButtonList – lista pól wyboru, w której zaznaczona
może być tylko jedna opcja. Ta kontrolka także przyda się
przy projektowaniu ankiet, w których możliwe jest zaznaczenie tylko jednej opcji.
Image – kontrolka umożliwiająca wyświetlenie obrazku.
ImageMap – kontrolka, dzięki której zdefiniujemy mapę
obrazu. Dzięki niej podzielmy rysunek na obszary, których
kliknięcie powoduje przejście do innej strony. Przykładowo
możemy wyświetlić na stronie mapę świata, a następnie
zdefiniować do niej mapę obrazu, w wyniku czego klikniecie określonego obszary przekieruje nas na stronę z informacjami na temat danego państwa.
Table – kontrolka, która służy do wygenerowania tabeli.
Oczywiście na stronie możemy wyświetlić standardową
tabele (znaczniki <table><tr><td..). Ale dzięki tej kontrolce
serwerowej możemy uzyskać z poziomu kodu dostęp do
każdego wiersza, a nawet komórki tabeli.
BulletedList – wypunktowana lista elementów. Możemy jej
użyć, jeśli chcemy tylko wyświetlić w postaci listy pewne
informacje np. z bazy danych.
HiddenField – kontrolka umożliwiającą umieścić na stronie
ukryte pole przechowujące pewne informacje, które mają
nie być widoczne dla użytkownika.
Literal – służy do rezerwowania miejsca na stronie
Web, w którym ma być wyświetlony tekst. Kontrolka
Literal jest podobna do kontrolki Label, poza faktem, że
w przypadku kontrolki Literal nie można zmieniać stylu
wyświetlanego tekstu. Można programowo kontrolować
tekst wyświetlany w kontrolce poprzez ustawienie właściwości Text.
Calendar – kontrolka wyświetlająca na stronie kalendarz.
Listing 2. Źródło strony wygenerowane przez
przeglądarkę
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/
/EN" "http://www.w3.org/TR/xhtml1/DTD/
xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Untitled Page</title></head>
<body>
<form name="form1" method="post" action="Default2.aspx"
id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/
wEPDwUJODExMDE5NzY5ZGTHoqDWXUUZvNpJuS1ucFWZtBDoaw==" />
</div>
<div>
<span id="Label1">Label</span>
</div>
</form>
</body>
</html>
www.sdjournal.org
27
ASP.NET Starter Kit
•
•
•
Rysunek 2. Połączenie kontrolek GridView i FormView
•
•
•
•
•
•
•
•
•
AdRotator – kontrolka, która zmienia swoją zawartość przy
ładowaniu strony. Możemy jej użyć np. do cyklicznego wyświetlania banerów, zdjęć, itp.
FileUpload – kontrolka, która umożliwia wgrywanie plików
na serwer.
Wizard – kontrolka, która umożliwia stworzenia wszelkiego
rodzaju kreatorów. Możliwe jest zdefiniowanie poszczególnych kroków – etapów kreatora. Każdy z etapów przechowuje pewien zbiór kontrolek oraz jest automatycznie wyposażany przez kontrolkę Wizard w przyciski nawigacji –
następny, poprzedni, zakończ.
XML – kontrolka służąca do wyświetlenia na stronie
WWW zawartości pliku XML bez formatowania lub przy
użyciu transformacji XSL.
MultiView – pełni rolę pojemnika dla kontrolek typy View.
Umożliwia ona wyświetlenie określonej kontrolki View
w zależności od pewnych zdarzeń zachodzących na stronie.
Panel – kontrolka pełniąca rolę pojemnika na inne kontrolki.
PlaceHolder – rozwiniecie kontrolki Panel. Umożliwia dodawanie nowych kontrolek serwerowych w trakcie działania aplikacji.
View – kontrolka dodawana do pojemnika MultiView. Przechowuje zbiór kontrolek serwerowych.
Substitution – kontrolka używana w przypadku, kiedy strony są prawie w całości buforowane, a tylko niektóre jej elementy są tworzone na nowo.
Data
W sekcji data znajdują się kontrolki umożliwiające zarówno
definiowanie źródeł danych jak i prezentację tych danych na
stronie WWW. Są to następujące kontrolki:
•
28
GridView – najważniejsza kontrolka służąca do wyświetlania i modyfikacji danych. Jeśli źródło danych podpięte do tej kontrolki zawiera wszystkie niezbędne polecenia
SQL (SELECT, INSERT, UPDATE, DELETE) wówczas do każdego
wiersza kontrolki DataGrid dodawane są przyciski Select,
•
•
•
Edit, Delete. Przycisk Select sluży do zaznaczenia wiersza
i przekazania wyboru dalej, np. do kontrolki FormView lub
DetailsView, która wyświetli wszystkie dane dotyczące zaznaczonego wiersza. Istnieje także inna możliwość zapełniania kontrolki GridView danymi. Jako źródło danych możemy wskazać wywołanie metody, która jako wynik zwraca obiekt typu DataTable. Przykładowa definicja kontrolki
GridView korzystającej z takiej metody została przedstawiona na Listingu 3, zaś sama metoda na Listingu 4.
DetailsView – kontrolka ta jest zazwyczaj stosowana razem
z kontrolka GridView i służy do wyświetlania szczegółów na
temat zaznaczonego w kontrolce GridView rekordu.
FormView – pełni podobną rolę jak kontrolka DetailsView,
ale w tym przypadku użytkownik ma możliwość zdefiniowania wzorca wyświetlania danych. W kontrolce DetailsView
dane wyświetlane są w kolejnych wierszach. Połączenie
kontrolek GridView i FormView (do wyświetlenia szczegółów wiersza) zostało przedstawione na Rysunku 2.
DataList – mniej funkcjonalna od dwóch poprzednich kontrolek służąca do wyświetlenia danych. Pokazuj dane ze zbioru
według ustalonego wcześniej przez użytkownika schematu.
Repeater – kontrolka podobna w swym działaniu do DataList.
Wyświetla sekwencyjnie dane, ale to użytkownik musi zdefiniować na poziomie kodu jak dane mają być wyświetlane.
W tym celu musi zdefiniować odpowiednie szablony np. ItemTemplate – szablon wyświetlania elementów, HeaderTemplate – szablon nagłówka, FooterTemplate – szablon stopki.
SqlDataSource – jest to podstawowa kontrolka reprezentująca źródło danych w ASP.NET 2.0. Umożliwia ona pobranie danych np. z serwera SQL Server Express 2005, a następnie przypisanie ich do kontrolek wyświetlających dane.
Kontrolkę SqlDataSource konfigurujemy przy pomocy opcji
Choose Data Source, która jest dostępna po kliknięciu ikony strzałki znajdującej się w prawym górnym rogu kontrolki.
W pierwszym kroku użytkownik jest zobowiązany do wybrania lub zdefiniowania łańcuch połączenia z serwerem. Następnie możemy wpisać poszczególne instrukcje SELECT, INSERT, UPDATE, DELETE ręcznie (opcja Specify a custom SQL
statement or stored procedure, pomocny będzie w tym QueryBuilder, który umożliwia wizualne generowanie instrukcji
SQL) lub zbudować polecenie SELECT samodzielnie. W tym
celu wybieramy interesująca nas tabele i jej kolumny, a następnie definiujemy klauzule WHERE i/lub ORDER BY. Jeśli chcemy, aby wygenerowane zostały także pozostałe instrukcje
klikamy przycisk Advanced, a następnie zaznaczamy Generate
INSERT,UPDATE and DELETE statements. Pamiętajmy tylko, że
aby móc wygenerować te instrukcje, wśród wybranych przez
nas kolumn musi znajdować sie kolumna klucza głównego.
Definicja źródła danych jest dostępna bezpośrednio z poziomu kodu strony. Przykładowa definicja kontrolki SqlDataSource została przedstawiona na Listingu 5.
ObjectDataSource – kontrolka będąca źródłem danych dla
dowolnego obiektu biznesowego. Jest ona podobna do
kontrolki SqlDataSource, ale zamiast łańcucha połączeń
musimy zdefiniować właściwość TypeName reprezentującą typ obiektu (nazwę klasy) odpowiedzialnej za operacje na danych. Ponadto we właściwościach SelectMethod,
UpdateMethod, InsertMethod i DeleteMethod podajemy
nazwę metod uruchamianych do wykonania odpowiedniej
operacji.
www.sdjournal.org
Software Developer’s Journal Extra! 20
•
•
XmlDataSource – kontrolka ta pełnie rolę źródła danych
dla plików XML.
SiteMapDataSource – kontrolka reprezentująca specjalne
źródło danych. Przedstawia ona mapę witryny, czyli opis
logicznej struktury aplikacji webowej (witryny internetowej)
i związki pomiędzy należącymi do niej stronami. Ten typ
źródła danych jest wykorzystywane przez kontrolki serwerowe z grupy Navigation.
Validation
W grupie tej znajdują się serwerowe kontrolki walidacyjne, które
służą do sprawdzania poprawności wprowadzanych przez użytkownika danych. Każda z kontrolek walidacyjnych musi posiadać
określoną właściwość ControlToValidate, która wskazuje kontrolkę znajdująca się na tej stronie, które będzie monitorowana. Każda z kontrolek walidacyjnych z danej strony może przynależeć do
tzw. ValidationGroup, co umożliwia zdefiniowanie grup kontrolek
walidacyjnych i wyświetlanie różnych komunikatów w zależności
od przynależności do danej grupy. Ponadto ważne jest zdefiniowanie w kontrolkach tego typu właściwości ErrorMessage, która określa treść komunikatu o błędzie oraz właściwości Display
decydującej o sposobie wyświetlania tych komunikatów. Możliwe opcje wyboru to Static – na stronie zostanie zarezerwowane
miejsce na komunikat, który zostanie wyświetlony w momencie
wykrycia błędu, Dynamic – komunikat zostanie dodany do strony
tylko w przypadku wykrycia błędu, None – komunikat nie będzie
wyświetlany w miejscu gdzie znajduje się kontrolka walidacyjna,
ale w specjalnej kontrolce podsumowującej walidacje strony ValidationSummary. W ASP.NET 2.0 mamy do dyspozycji następujące kontrolki walidacyjne:
•
•
•
•
Listing 3. Definicja kontrolki GridView korzystającej
z metody, która zapełni ją danymi
•
<asp:gridview id="GridView1" runat="server"
autogeneratecolumns="False" cellpadding="4"
datakeynames="id_aukcji" datasourceid="<%GetData();%>"
•
emptydatatext="There are not any auctions"
forecolor="#333333" pagesize="1"
onrowdatabound="GridView1_RowDataBound"
ondatabound="GridView1_DataBound"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onrowcreated="GridView1_RowCreated" >
Navigation
<footerstyle backcolor="#5D7B9D" font-bold="True"
Kontrolki znajdujące się w sekcji Navigation służą do wdrażania schematów nawigacji w aplikacjach internetowych. Są to
następujące kontrolki:
forecolor="White" width="100%" />
<columns>
<asp:commandfield showselectbutton="True" />
<asp:imagefield dataimageurlfield="zdjecie"
•
headertext="Image">
<controlstyle height="100px" width="100px" />
</asp:imagefield>
<asp:boundfield datafield="nazwa" headertext="Name"
•
sortexpression="nazwa" />
<asp:boundfield datafield="czas_trwania" headertext="End"
sortexpression="czas_trwania" />
<rowstyle backcolor="#F7F6F3" forecolor="#333333" />
<editrowstyle backcolor="#999999" />
<selectedrowstyle backcolor="#E2DED6" font-bold="True"
forecolor="#333333" />
horizontalalign="Center" />
<headerstyle HorizontalAlign="Center" backcolor="#5D7B9D"
font-bold="True" forecolor="White" />
forecolor="#284775" />
</asp:gridview>
Software Developer’s Journal Extra! 20
•
SiteMapPath – kontrolka wyświetlająca listę odnośników
(linków) reprezentujących aktualną stronę, na której znajduje się użytkownik oraz hierarchiczną ścieżkę w górę do
strony głównej aplikacji webowej.
Menu – kontrolka wyświetlająca menu nawigacyjne umożliwiające poruszanie się po aplikacji.
TreeView – kontrolka wyświetlająca dane o hierarchicznej
strukturze. Kontrolka ta może służyć do wyświetlenia hierarchii kategorii i pod kategorii, co zostało zaprezentowane
na Rysunku 4.
Kontrolki z sekcji Navigation zostały zaprezentowane na Rysunku 3.
<pagerstyle backcolor="#284775" forecolor="White"
<alternatingrowstyle backcolor="White"
RequiredFieldValidator – kontrolka sprawdzająca, czy
użytkownik wpisał dane.
RangeValidator – kontrolka umożliwiająca sprawdzenie,
czy wpisane prze użytkownika dane znajdują sie w pewnym zakresie (właściwości MinimumValue, MaximumValue). Musimy także zdefiniować jakiego typu będą sprawdzane dane (właściwość Type).
RegularExpressionValidator – kontrolka sprawdzająca, czy
wpis użytkownika jest zgodny z pewnym wzorem, zdefiniowanym przez wyrażenie regularne. Przykład definicji kontrolki RegularExpressionValidator sprawdzającej czy wgrywany na serwer przy pomocy kontrolki FileUpload plik ma
rozszerzenie gif został przedstawiony na Listingu 6.
CompareValidator – kontrolka umożliwiająca porównywania danych wpisanych przez użytkownika ze stałą wartością (właściwość ValueToCompare), lub wartością innej
kontrolki (właściwość ControlToCompare). W pierwszym
przypadku można zdefiniować oczekiwany typ wpisanych
przez użytkownika danych (właściwość Type).
CustomValidator – kontrolka umożliwiająca zastosowanie
własnego kodu walidacyjnego.
ValidationSummary – kontrolka umożliwiająca wyświetlenie podsumowanie o wszystkich błędach wygenerowanych
przez wszystkie walidacyjne kontrolki na danej stronie lub jeśli zdefiniowano właściwość ValidationGroup tylko kontrolki
przynależących do tej grupy (wówczas kontrolka ValidationSummary także musi przynależeć do tej samej grupy).
Login
W ASP.NET 2.0 wprowadzono nowy model bezpieczeństwa
tzw. Membership Provider Model. Model ten dostarcza programistom interfejs do zabezpieczania swoich aplikacji, a także tworzenia mechanizmów uwierzytelniania i personalizacji.
www.sdjournal.org
29
ASP.NET Starter Kit
Listing 4. Metoda GetData zapełniająca kontrolkę GridView danymi
public DataTable GetData() {
typeof(string)));
DateTime now = DateTime.Now;
dt.Columns.Add(new DataColumn("nazwa",
SqlConnection myConnection = new SqlConnection(
typeof(string)));
“Data Source=komputer-igora\sqlexpress;Initial
dt.Columns.Add(new DataColumn("czas_trwania",
Catalog=aukcje;Integrated Security=True”);
typeof(string)));
String SelectCmdString = "SELECT nazwa,zdjecie,
DataRow dr;
while (dtr2.Read()) {
czas_trwania FROM aukcje WHERE czy_zablokowana=0
AND czas_trwania>'" + now + "' ORDER BY
dr= dt.NewRow();
czas_trwania ASC";
dr["zdjecie"]=ResolveUrl(dtr2.GetValue(1).ToString());
SqlDataAdapter mySqlDataAdapter = new
dr["nazwa"]=dtr2.GetValue(0).ToString();
SqlDataAdapter(SelectCmdString, myConnection);
dr["czas_trwania"]=dtr2.GetDateTime(2).
DataSet myDataSet = new DataSet();
ToShortDateString();
mySqlDataAdapter.Fill(myDataSet);
dt.Rows.Add(dr);
DataTable dtt = myDataSet.Tables[0];
}
DataTableReader dtr = dtt.CreateDataReader();
DataTable dt = new DataTable();
}
return dt;
dt.Columns.Add(new DataColumn("zdjecie",
Kontrolki znajdujące sie w sekcji Login wykorzystują właśnie
ten model. Są to następujące kontrolki:
•
•
•
•
•
•
•
ChangePassword – kontrolka dostarczająca formularz, który służy do zmiany haseł. Jak większość kontrolek z tej grupy umożliwia ona zdefiniowanie stylu. W tym celu zaznaczamy kontrolkę, następnie klikamy ikonę strzałki znajdującą się w prawym górnym rogu i z menu wybieramy AutoFormat. ASP.NET 2.0 dostarcza nam kilka zdefiniowanych
stylów, który możemy zastosować na naszej stronie.
CreateUserWizard – kontrolka reprezentująca kreator dodawania nowego użytkownika.
Login – kontrolka dostarczająca użytkownikowi gotowy formularz służący do logowania. Formularz ten zawiera 2 pola tekstowe służące do wpisania loginu i hasła, a także pole
checkbox, umożliwiające zapamiętywanie użytkownika, gdy
następnym razem wejdzie na stronę (nie będzie musiał się
logować). Po wpisaniu danych klikamy przycisk Log In.
LoginView – kontrolka będąca odmianą kontrolki MultiView. Posiada zdefiniowane dwa stany: jeden dla niezalogowanego użytkownika, drugi wyświetlany w przypadku,
kiedy użytkownik poprawnie sie zalogował.
LoginStatus – kontrolka, która umożliwia zalogowania i wylogowanie się użytkownika.
LoginName – kontrolka reprezentująca nazwę zalogowanego użytkownika.
PasswordRecovery – kontrolka umożliwiająca przypominanie haseł.
userName="nazwa_konta" />
</smtp>
</mailSettings>
</system.net>
Jeśli nie chcemy wpisywać tych ustawień ręcznie możemy posłużyć się narzędziem ASP.NET Web Site Administration Tool. W zakładce Application klimay na Configure SMTP e-mail
settings. Po wpisaniu wszystkich niezbędnych informacji wciskamy Save w celu zapisania ich w pliku web.config. Dodatkowe opcję związane z wysyłaną do użytkownika wiadomością
definiujemy poprzez grupę właściwości MailDefinition. Mamy możliwość ingerencji zarówno w format jak i treść wysyłanej wiadomości. Domyślna treść wiadomości wysyłana przez
kontrolkę PasswordRecovery wygląda następująco:
Please return to the site and log in using the following
information.
User Name: igor
Password: 8{p1Pa=wl34Z3X
Jeśli nie odpowiada ona naszym wymaganim możemy zdefiniować statyczną treść wiadomości i umieścić ją w pliku tek-
Część kontrolek z grupy Login np. PasswordRecovery próbuje wysyłać do użytkowników e-maile. Aby ta funkcjonalność
działała poprawnie należy zdefiniować w pliku konfiguracyjnym web.config ustawienia używanego serwera SMTP. Przykładowe ustawienia zostały przedstawione poniżej:
<system.net>
<mailSettings>
<smtp from="nadawca">
<network host="adres_serwera_SMTP" password="hasło"
30
Rysunek 3. Kontrolki z sekcji Navigation
www.sdjournal.org
Software Developer’s Journal Extra! 20
Listing 6. Przykładowa definicja kontrolki RegularExpres
sionValidator
<asp:regularexpressionvalidator
id="RegularExpressionValidator3"\
runat="server"
Rysunek 4. Kontrolka typu Tree View
controltovalidate="FileUpload1"
stowym. Dostęp do nazwy użytkownika i nowego hasła mamy dzięki znacznikom <%Password%> i <%UserName%>. Następnie nazwę takiego pliku przypisujemy do właściwości BodyFileName kontrolki PasswordRecovery. Ponadto jeśli chcemy mieć jeszcze większą kontrolę nad wysyłaną wiadomością powinniśmy zdefiniować metodę SendingMail, w której dostęp do obiektu reprezentującego wysyłaną wiadomość uzyskujemy za pośrednictwem parametru MailMessageEventArgs.
WebParts
Technologia WebParts jest nowością w ASP.NET 2.0. Pozwala ona zorganizowanie stron wchodzących w skład aplikacji webowej w sposób umożliwiający jej użytkownikom dostosowywać jego wygląd do osobistych potrzeb. W technologii
WebParts używane są następujące kontrolki:
Listing 5. Definicja kontrolki SqlDataSource
display="Dynamic"
errormessage="Only gif files are allowed!"
validationexpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(
\w[\w].*))+(.gif|.GIF|.Gif)$"
validationgroup="addfile">
</asp:regularexpressionvalidator>
•
•
•
•
•
<asp:sqldatasource id="SqlDataSource2" runat="server"
•
connectionstring="<%$ ConnectionStrings:
aukcjeConnectionString %>"
deletecommand="DELETE FROM [formy_platnosci] WHERE
•
[id_formy_platnosci] = @id_formy_platnosci"
insertcommand="INSERT INTO [formy_platnosci] ([nazwa],
[cena]) VALUES (@nazwa, @cena)"
selectcommand="SELECT * FROM [formy_platnosci] WHERE
•
([id_formy_platnosci] = @id_formy_platnosci)"
updatecommand="UPDATE [formy_platnosci] SET [nazwa]
= @nazwa, [cena] = @cena WHERE [id_formy_platnosci]
= @id_formy_platnosci">
•
<deleteparameters>
<asp:parameter name="id_formy_platnosci"
•
type="Int32" />
</deleteparameters>
<updateparameters>
•
<asp:parameter name="nazwa" type="String" />
<asp:parameter name="cena" type="Decimal" />
•
<asp:parameter name="id_formy_platnosci"
type="Int32" />
•
</updateparameters>
<selectparameters>
<asp:controlparameter controlid="GridView1"
Podsumowanie
name="id_formy_platnosci"
propertyname="SelectedValue" type="Int32" />
</selectparameters>
<insertparameters>
<asp:parameter name="nazwa" type="String" />
<asp:parameter name="cena" type="Decimal" />
</insertparameters>
</asp:sqldatasource>
Software Developer’s Journal Extra! 20
WebPartManager – pełni rolę zarządcy wszystkich kontrolek WebParts znajdujących sie na danej stronie.
ProxyWebPartManager – jest to kontrolka, która umożliwia
zdefiniowanie połączenia z WebPartManager znajdującym
się w pliku .master (MasterPage).
WebPartZone – kontrolka ta pełni rolę pojemnika dla zwykłych kontrolek serwerowych wyświetlanych na stronie.
CatalogZone – kontrolka ta definiuje przestrzeń katalogową, czyli pewien zbiór kontrolek WebParts. Jest ona widoczna tylko wtedy, kiedy użytkownik przełączy stronę
WWW w tryb CatalogDisplayMode.
DeclarativeCatalogPart – kontrolka, która umożliwia programiście dodanie kontrolek do katalogu na stronie.
PageCatalogPart – kontrolka dostarczająca katalog – zbiór
kontrolek WebParts, które użytkownik zamknął. Mogą one
być ponownie dodane do katalog strony.
ImportCatalogPart – kontrolka ta pozwala użytkownikowi
importować ustawienia dotyczące WebParts z zewnętrznego źródła.
EditorZone – jedna z najważniejszych kontrolek technologii WebParts. To ona dostarcza mechanizmu umożliwiającego użytkownikowi dostosowywanie WebParts do swoich
potrzeb.
ApperanceEditorPart – kontrolka umożliwiająca edycję
wyglądu np. tytuł, szerokość, wysokość w kontrolce WebParts.
BehaviorEditorPart – kontrolka umożliwiająca edycję zachowania w kontrolce WebParts, np. przyciski Edit, Close,
itp.
LayoutEditorPart – kontrolka umożliwiająca edycję układu
interfejsu w kontrolce WebParts.
PropoertyGridEditorPart – kontrolka umożliwiająca edycję
właściwości w kontrolce WebParts.
ConnectionsZone – umożliwia dynamiczne łączenie się
WebParts pomiędzy sobą.
Ilość kontrolek oferowanych w ASP.NET 2.0 może wprowadzić początkującego programistę w niemałe zakłopotanie.
Tym bardziej, że nie zna on możliwości jakie te kontrolki oferują. Zapewne w swojej pracy część kontrolek będzie wykorzystał częściej, inne rzadziej, ale znajomość ich bogactwa
umożliwi mu pisanie jeszcze lepszych, a przede wszystkim
bardziej funkcjonalnych aplikacji. Mamy nadzieję, że pomocna
będzie w tym lektura powyższego artykułu. n
www.sdjournal.org
31

Podobne dokumenty