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