Download præsentationen
Præsentation er lastning. Vent venligst
1
Programmeringsteknologi
ASP.NET Programmeringsteknologi The pure and simple truth is rarely pure and never simple." Oscar Wilde
2
Jens Houmann - Nordjyllands Erhvervsakademi
Husmand/specialist Jens Houmann - Nordjyllands Erhvervsakademi
3
Interaktionsudvikling
Hvad er mon dette? Den første tegning af Internettet Interaktionsudvikling
4
Internettets historie
Interaktionsudvikling
5
Internettets historie
Interaktionsudvikling
6
Internettets historie
Interaktionsudvikling
7
Interaktionsudvikling
Nogle begreber Hvad er Internettet? Hvad er WWW? Hvad er en browser? Hvad laver en server? Hvad er en URL? Hvad laver en DNS? Hvad er HTML? Hvad er en IP-adresse? Interaktionsudvikling
8
Interaktionsudvikling
Hvad er internettet? Hvad kan det bruges til? Hvordan virker det? Hvor mange brugere og sites? Hvad kræves der for at komme på? Hvilke browsere anvendes? Interaktionsudvikling
9
Interaktionsudvikling
Hvad kan det bruges til? Mail Informationssøgning Filoverførsel Chat Spil Ressourcedeling Overvågning E-handel Nyhedsgrupper Navigation (google maps) Interaktionsudvikling
10
Internettet – Interconnected Nets
Et antal host forbundet ved hjælp af TCP/IP-protokollen. WWW World Wide Web FTP File Transfer SMTP Simple Mail Transfer HTTP HyperText Transfer SNMP Simple Network Management Interaktionsudvikling
11
Interaktionsudvikling
World Wide Web Godt 18 tusinde i 1995 sites i december 2001 118,023,363 sites i august 2007 175,480,931 sites i august 2008 Mere end 20 millioner servere Det skønnes at der er 1,463,632,361 mio. brugere af internettet Kilde: Interaktionsudvikling
12
Hvem bruger internettet?
Interaktionsudvikling
13
Hvilken browser anvendes i dag?
Interaktionsudvikling
14
Interaktionsudvikling
Og hvem er så det????? Sir Tim Berners-Lee – Udviklede HTML Sir Interaktionsudvikling
15
Interaktionsudvikling
Og hvem er så det? Marc Andreessen – opfinder Mosaic-Browseren (facebook) Interaktionsudvikling
16
Interaktionsudvikling
World Wide Web Grundlagt i 1989 af CERN med støtte fra NCSA. Sir Tim Berners-Lee lavede rygraden National Center for Supercomputer Applications lavede Mosaic-browseren. Bygger på det oprindelige Arpanet fra 1960-erne Anvender TCP/IP-protokollen med overliggende tjenester HTTP – Hyper Text Transfer Protocol Interaktionsudvikling
17
Interaktionsudvikling
En URL URL: Uniform Ressource Locator www: protokol olsen: Domænenavn dk: Domæne Danmark beskrivelser: sti til websider index.html: konkret dokument af typen HTML Interaktionsudvikling
18
En URL – søgt efter: Canon
Interaktionsudvikling
19
Interaktionsudvikling
World Wide Web W3C, World Wide Web Consortium sørger for standardisering gennem Recommandations Kan findes på Kan validere html-dokumenter Interaktionsudvikling
20
Interaktionsudvikling
HTML HyperText Markup Language Formatteringssprog til WWW-sider HyperText = tekst med links til andre steder i teksten f.eks. Windows Help-system Interaktionsudvikling
21
Eksempel på HyperTekst
Interaktionsudvikling
22
Jens Houmann - Nordjyllands Erhvervsakademi
Internettet funktion Jens Houmann - Nordjyllands Erhvervsakademi
23
Interaktionsudvikling
HTML En HTML-fil er en tekstfil HTML-filen fortolkes af en browser Resultatet er et "grafisk billede” HTML er standardiseret HTML beskæftiger sig kun med hjemmesidens udseende Der findes mange udvidelser til HTML: JavaScript XML DHTML XHTML Interaktionsudvikling
24
Et simpelt dokument Bemærk indrykningen
<html> <head> <title>Mit første HTML dokument</title> </head> <body> Hello World! </body> </html> Interaktionsudvikling
25
Interaktionsudvikling
Resultat Interaktionsudvikling
26
Interaktionsudvikling
HTML-filen En HTML-fil består af Tekst (indholdet), der vises i browseren Kontrolkoder (tags), der fortæller, hvordan teksten vises Et tag er altid på formen <x> efterfulgt af </x> <x> er start-tag, </x> er slut-tag Enkelte undtagelser: <BR /> Interaktionsudvikling
27
Resultat (<br> indsat)
Interaktionsudvikling
28
Interaktionsudvikling
Eksempel <HTML> <!-- Eksempel på et HTML-dokument --> <!– Lavet af Søren Sømand > <HEAD> <TITLE>Internet and WWW How to Program - Welcome</TITLE> </HEAD> <BODY> <P>Welcome to Our Web Site!</P> </BODY> </HTML> Interaktionsudvikling
29
Interaktionsudvikling
Resultatet Interaktionsudvikling
30
Jens Houmann - Nordjyllands Erhvervsakademi
Litteratur til ASP.NET Beginning ASP.NET 3.5 in C# 2008 Matthew Mac Donald Apress ISBN ASP.NET Unleashed Stephen Walther Sams Publishing ISBN: x Beginning ASP.NET 2.0 With C# Chris Ullman et. Al. Wrox ISBN: Jens Houmann - Nordjyllands Erhvervsakademi
31
Jens Houmann - Nordjyllands Erhvervsakademi
Indhold - overordnet Introduktion .Net arkitekturen ASP.NET siders anatomi Web og Web-forms Internet Information Server Forms og Server Controls Variable, datatyper og datastrukturer Kontrolstrukturer Objekter, klasser, metoder, Events ADO.NET, Datasæt og databinding Repeater, Datalist, Datagrid Læsning/skrivning af filer Læsning databaser Code-Behind og reusable code Systemudvikling Test Jens Houmann - Nordjyllands Erhvervsakademi
32
Jens Houmann - Nordjyllands Erhvervsakademi
Lektionsplan – dag 1 Introduktion til Active Server Pages. Nogle væsentlige begreber Lidt Web-teori Internet Information Server Traditionel ASP .NET-arkitekturen ASP.NET – en sides opbygning Jens Houmann - Nordjyllands Erhvervsakademi
33
Jens Houmann - Nordjyllands Erhvervsakademi
Hvad er ASP.Net Microsoft Framework – Active Server Pages Inkl: Server scripts Web Forms Web services 100% Objektorienteret med GUI Web controls som udvidelser til html Adskillelse af layout og virksomhedslogik Component-baseret udvikling Interaktivt design af hjemmesider Compileret kode, ikke oversat State-management Jens Houmann - Nordjyllands Erhvervsakademi
34
Jens Houmann - Nordjyllands Erhvervsakademi
ASP.NET anvendelse Tællere til antal besøgende E-handelssider Databasetilgang/vedligehold Kalender-funktioner Brugerundersøgelser Nyhedsbreve Tilmelding til arrangementer Afsendelse af , SMS etc. Jens Houmann - Nordjyllands Erhvervsakademi
35
Jens Houmann - Nordjyllands Erhvervsakademi
Web-udviklingen Bruger af Internettet Hjemmesider med information, links og farver Sites med tabeller, frames Brug af client-side scripting og Cascading Stylesheets Forms til indtastning af data Dynamiske sider til behandling af data (ASP, JSP) Platforms-uafhængig kode med code-behind og stored procedures. Web-services og Business objects Web 2.0, AJAX, SilverLight ????? Jens Houmann - Nordjyllands Erhvervsakademi
36
Web-løsning vs. Windows-løsning
Angiv fordele og ulemper Jens Houmann - Nordjyllands Erhvervsakademi
37
Jens Houmann - Nordjyllands Erhvervsakademi
Stateless Jens Houmann - Nordjyllands Erhvervsakademi
38
ASP – Active Server Pages
Server side scripting-miljø lavet af Microsoft Kører mest almindeligt via Web-serveren Internet Information Services (IIS) Inkluderet i Win XP og Vista ASP anvendes når der er behov for dynamiske hjemmesider. ASP genererer HTML (dynamisk) – indhold ændrer sig afhængigt af det programmerede indhold af ASP-siden En ASP-side er ren tekst med kode som IIS behandler Jens Houmann - Nordjyllands Erhvervsakademi
39
ASP – Active Server Pages
Siderne kan skrives i: Notepad HTML-Editor Stones Web-writer Frontpage Editor Dreamweaver etc. GoLive IDE (integrated developement environment) Web-matrix Visual Studio .Net Jens Houmann - Nordjyllands Erhvervsakademi
40
ASP – Active Server Pages
Extension skal være: ASPX for .NET ASP for traditionel ASP IIS vil selv lede efter default.aspx (som regel) ASP er ikke i sig selv case-sensitive C# er case sensitive Kan give en uhyggelig blanding af Data, logik og præsentation. Jens Houmann - Nordjyllands Erhvervsakademi
41
Jens Houmann - Nordjyllands Erhvervsakademi
Active Server Pages Kan afvikle scripts i: Visual Basic (VBScript) C# (See Sharp) Kode kan udvikles i ”alle” andre sprog: Java, Eifel, Cobol etc. Jens Houmann - Nordjyllands Erhvervsakademi
42
Første eksempel (trad. ASP)
Eks1.asp <html> <head> <title>Min allerførste ASP-side</title> </head> <body> <h1Aalborg, februar 2009</h1> <br> Klokken er nu: <%=time%> <BR> <h2>Goodmorning Campers - This might be your lucky day!</h2> </body> </html> Se den her Jens Houmann - Nordjyllands Erhvervsakademi
43
Første eksempel (ASP.NET c#)
Page Language="C#" %> <script runat="server"> void Page_Load(object Sender ,EventArgs E) { lblMessage.Text= "Velkommen til Kursus "; } </script> <html> <head> <title>Min allerførste ASP.NET-side</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body> Aalborg, februar 2007 <br> <asp:label ID="lblMessage" Font-Size="20pt" runat=server/> <br> Goodmorning Campers - This might be your lucky day! </body> </html> Se eksemplet her Jens Houmann - Nordjyllands Erhvervsakademi
44
Virtuelle directories
Jens Houmann - Nordjyllands Erhvervsakademi
45
Internet Information Services (IIS)
IIS er Microsofts Web Server kører som en separat process "inetinfo.exe" kræver et server-like OS: Windows Vista, XP Pro multi-threaded for servicering af tusindvis af requests… client IIS client client Windows Server . Jens Houmann - Nordjyllands Erhvervsakademi
46
Jens Houmann - Nordjyllands Erhvervsakademi
Web site IIS håndterer web sites Hvordan virker IIS? Hvert web-site har sin egen fysiske mappe på harddisken Hvert web-site tildeles et virtual name til denne mappe Brugere surfer til vores web-site vha. det givne virtual name Eksempel: web site lever i C:\Inetpub\wwwroot\WebSite web site's virtual name er "AAAPainting" IIS mapper det virtuelle til den fysiske… Jens Houmann - Nordjyllands Erhvervsakademi
47
Jens Houmann - Nordjyllands Erhvervsakademi
Øvelse Prøv det ! - se også source/kilde i browseren. Jens Houmann - Nordjyllands Erhvervsakademi
48
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave 1 Lav eksempel 1 om til at modtage to felter: fornavn og efternavn. Når der trykkes på knappen skal der udskrives hele navnet. Se løsningen her Jens Houmann - Nordjyllands Erhvervsakademi
49
Jens Houmann - Nordjyllands Erhvervsakademi
Repetition Hvad er forskellen på javascript og ASP.Net Hvad kan .Net? Hvad er Page_Load? Hvad betyder JIT? Hvad er servercontrols? Hvad hedder Microsofts webserver? Hvad er request og responseobjekter? Hvad betyder begrebet stateless? Hvad er en code-render-block? Hvad er et virtuelt directory? Jens Houmann - Nordjyllands Erhvervsakademi
50
Jens Houmann - Nordjyllands Erhvervsakademi
Mål “Microsoft .NET is based on the Common Language Runtime (CLR) and an extensive set of Framework Class Libraries (FCL). The CLR defines a common programming model and a standard type system for cross-platform, multi-language development.” CLR-baseret eksekvering Applikationsdesign Komponent-baseret udvikling Jens Houmann - Nordjyllands Erhvervsakademi
51
.Net arkitektur .NET OOP JVM GUI Web component-based design
n-tier design Jens Houmann - Nordjyllands Erhvervsakademi
52
.NET understøtter en række sprog
.NET understøtter VB, C# (C-sharp), C++, J# (Java 1.1), Eiffel, etc. code.vb code.cs code.cpp ... FCL Development Tools FCL app.exe Jens Houmann - Nordjyllands Erhvervsakademi
53
.NET er “platformsuafhængigt”
Kompilerede .NET applikationer kører på alle supporterede platforme: APP.exe ? Microsoft påstår multi-platform, underforstået forskellige versioner af Windows :-) Andre platforme? Januar 2003: Mono: open-source Linux port of .Net, beta, no GUI support. Rotor: MS has released the source to the standardized components of .Net, compiles on Windows, FreeBSD, and Mac OS X Release, no GUI support. Mono kan downloades from Rotor, officielt kendt som SSCLI, kan downloades fra Win64 Win32 (XP,2K,98) WinCE Jens Houmann - Nordjyllands Erhvervsakademi
54
CLR-baseret eksekvering
.NET applikationer er ikke stand-alone .exe-programmer APP.exe OS Process CLR JIT Compiler other FCL components Core FCL obj code Underlying OS and HW Jens Houmann - Nordjyllands Erhvervsakademi
55
Jens Houmann - Nordjyllands Erhvervsakademi
Applikationsdesign Mange applikationer designes med N "tiers" god separation af ansvar muliggør brug af samme back-end tiers til forskellige klienter object object Front-end object Presentation Business Data Access Data Jens Houmann - Nordjyllands Erhvervsakademi
56
Jens Houmann - Nordjyllands Erhvervsakademi
Web app design Web app medfører at præsentationen genereres af en Web server Web server Web Page obj obj Browser obj ANY platform Server HTML / HTTP Fordele? skalerer til internet, udvider applikationens mulige målgruppe ingen firewall-problematik (HTTP / port 80 trafik) Ulemper? browser-baseret klient kan begrænse klientens kvalitet Til dels stateless Jens Houmann - Nordjyllands Erhvervsakademi
57
Jens Houmann - Nordjyllands Erhvervsakademi
Specielt for ASP.NET Integreret del af .Net frameworket – 100% objektorienteret. Opblødt skel mellem klient og server Stadig stateless, men dog en forbedring. ASP.NET kode er kompileret og ikke fortolket. Valgfrihed mht. programmeringsprog. Flytbart Mulighed for at anvende/udvikle webservices. Objekter/metoder kan kaldes på tværs af sprog Der kan anvendes flere udgaver af samme program samtidig…. COM-objekter skal ikke registreres. Shopping charts og datascrolling indbygget Session-state gør det muligt at lave server-farme Jens Houmann - Nordjyllands Erhvervsakademi
58
Jens Houmann - Nordjyllands Erhvervsakademi
Konvertering Variable skal defineres før de kan bruges Værdier der indtastes i formen er i string-format. For at kunne regne på indlæste værdier skal de konverteres til integer (eller float) For at kunne udskrive integers skal de konverteres til string. int intTal1; intTal1 = Convert.ToInt32(tbTal1.Text); lblResultat.Text = Convert.ToString(intResultat); Jens Houmann - Nordjyllands Erhvervsakademi
59
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave 2 Lav et ASP.NET program i C# der er i stand til at indlæse to tal og udskrive summen i en label. Programmet skal hedde Regne1.aspx Programmet skal være velstruktureret og med kommentarer. Se den vejledende løsning her. Jens Houmann - Nordjyllands Erhvervsakademi
60
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave 2 Jens Houmann - Nordjyllands Erhvervsakademi
61
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave 2 Page Language="C#" %> <script runat="server"> void Adder(object Sender ,EventArgs E) { // Der defineres tre variable af typen integer int intTal1, intTal2, intResultat; // De indlæste værdier konverteres fra tekst til integer intTal1 = Convert.ToInt32(tbTal1.Text); intTal2 = Convert.ToInt32(tbTal2.Text); // Det to tal adderes og lægges i intResultat intResultat = intTal1 + intTal2; // Resultatet konverteres til tekst (string) lblResultat.Text = Convert.ToString(intResultat); } </script> <hr><html> <head><title>Addition af to tal</title></head> <body> <font size="5">Additionsfætteren!</font> <hr> <form runat="server"> Indtast et tal: <asp:textbox id="tbTal1" runat=server/> Indtast et andet tal: <asp:textbox id="tbTal2" runat=server/> <asp:button ID="btSubmit" Text="Adder" OnClick="Adder" runat=server/><br><br> Summen af de to tal du tastede var: <asp:label ID="lblResultat" Font-Size="20pt" runat=server/> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
62
Jens Houmann - Nordjyllands Erhvervsakademi
Vigtigt Postback en form sendes tilbage til sig selv med oprindeligt indhold. ViewState Serveren holder styr på indholdet i de udfyldte felter Agenter på clienten sørger for at server får besked når en hændelse indtræffer. (ændring) Ved reload får man den samme side igen Runat = ”Server” Fortæller serveren at den skal styre afviklingen Må ikke undlades <ASP:Textbox osv Kaldes en web-server control Kan afsluttes i samme tag: <ASP:Textbox…../> Scripts kan placeres hvor som helst i koden, dog pænest i begyndelsen. Id=”XXX” Anvendes til senere reference Kan dog undværes i nogle tilfælde Jens Houmann - Nordjyllands Erhvervsakademi
63
Jens Houmann - Nordjyllands Erhvervsakademi
Vigtigt <%Response.Write(”Hello”)%> Kaldes en code render block Afvikles inden output sendes til browseren <%=”Hello”%> er en genvej Code render blocks omsættes ikke til MSIL. Code render blocks bliver fortolket Kan give sjove ting i output. Undgå disse, da det blander layout og logik. Language=”C#” %> Page direktiv skal placeres først i koden Jens Houmann - Nordjyllands Erhvervsakademi
64
Jens Houmann - Nordjyllands Erhvervsakademi
Vigtigt Managed Code Er kode som CLR holder øje med Hvis koden er ændret vil den kompile igen Første gang er der en lille forsinkelse Viewstate Hvordan ser tingene ud lige nu? Gemmes i hidden files (ren html) Jens Houmann - Nordjyllands Erhvervsakademi
65
Jens Houmann - Nordjyllands Erhvervsakademi
ViewState Jens Houmann - Nordjyllands Erhvervsakademi
66
Jens Houmann - Nordjyllands Erhvervsakademi
Workflow Jens Houmann - Nordjyllands Erhvervsakademi
67
Jens Houmann - Nordjyllands Erhvervsakademi
Opret alias på iistest Gå ind på: Vælg: bliv oprettet Husk at læse reglerne og krydse af. Alias bliver oprettet til næste gang Hjemmefra kan I så skrive: Jens Houmann - Nordjyllands Erhvervsakademi
68
Lidt programmeringsteknik
Kommentarer: <!–- Kommentar --> HTML ’Kommentar Visual Basic //Kommentar C# /* Denne kommentar er delt Over flere linier */ C# <%--Kommentar--%> Serverside Deling over flere linier <% Response.Write _ (”Hej”) %> Jens Houmann - Nordjyllands Erhvervsakademi
69
Automatisk overførsel via FTP
Lav en bat-fil med følgende indhold: @echo off Echo FTP er begyndt ftp -s:commando.txt iistest.noea.dk Pause Gem filen med navnet: SendHTML.BAT Det er vigtigt at extension er BAT Placér evt. på skrivebordet Jens Houmann - Nordjyllands Erhvervsakademi
70
Automatisk overførsel med FTP
Lav en tekstfil med følgende indhold: mitbrugernavn hemmeligtpwd cd minmappe ls put *.* Bye Filen gemmes med navnet commando.txt Jens Houmann - Nordjyllands Erhvervsakademi
71
Automatisk overførsel med FTP
Jens Houmann - Nordjyllands Erhvervsakademi
72
Jens Houmann - Nordjyllands Erhvervsakademi
Variable OH side 2 og 3 Jens Houmann - Nordjyllands Erhvervsakademi
73
Definition og Tildeling af variable
<script runat="server"> void Beregn(object Sender ,EventArgs E) { int intTal1 = 4711; float fltTal2 = f; double dblTal3 = ; long lngTal4 = ; lblResultat1.Text = Convert.ToString(intTal1); lblResultat2.Text = Convert.ToString(fltTal2); lblResultat3.Text = Convert.ToString(dblTal3); lblResultat4.Text = Convert.ToString(lngTal4); } </script> variable.aspx Jens Houmann - Nordjyllands Erhvervsakademi
74
Ternary – en rigtig nørd-ting
Jens Houmann - Nordjyllands Erhvervsakademi
75
Ternary – en rigtig nørd-ting
Page Language="C#" %> <script runat="server"> void UdskrivAntal(object Sender ,EventArgs E) { int intAntal = Convert.ToInt32(tbAntal.Text); lblResultat.Text = "Du bestilte:" + intAntal + " Pizza" + (intAntal != 1 ? "'er" : "") + " fra web-siden!"; } </script> <hr> <html> <head> <title>Ternary Operator</title> </head> <body> <font size="5">Ternary Operator!</font> <form runat="server"> Indtast antal pizza'er: <asp:textbox id="tbAntal" runat=server/> <asp:button ID="btSubmit" Text="UdskrivAntal" OnClick="UdskrivAntal" runat=server/><br><br> <asp:label ID="lblResultat" Font-Size="20pt" runat=server/> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
76
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav en regnemaskine der kan indlæse to tal og en regningsart (+ eller -) og udføre den pågældende beregning. Regningsarten skal indlæses fra en tekstboks. Jens Houmann - Nordjyllands Erhvervsakademi
77
Afrunding af decimaler
double dblTal = Convert.ToDouble(” ”); dblTal = Math.Round(dblTal,2); Vil udskrive værdien: Jens Houmann - Nordjyllands Erhvervsakademi
78
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Jens Houmann - Nordjyllands Erhvervsakademi
79
Vejledende løsning - reduceret
Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
80
Vejledende løsning -reduceret
REGNE3.ASPX Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
81
Jens Houmann - Nordjyllands Erhvervsakademi
Vejledende løsning Jens Houmann - Nordjyllands Erhvervsakademi
82
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav en regnemaskine der kan modtage to tal og en regneart (+ - * eller /) Og udføre den korrekte beregning. Ekstra: Hvis ikke regnearten er en af ovenstående gives en fejlmeddelelse. Jens Houmann - Nordjyllands Erhvervsakademi
83
Vejledende løsning - Husmand
Se løsningen her: Jens Houmann - Nordjyllands Erhvervsakademi
84
Vejledende løsning - korrekt
Se løsningen her: Jens Houmann - Nordjyllands Erhvervsakademi
85
Jens Houmann - Nordjyllands Erhvervsakademi
Switch Kan erstatte en if..sætning Anvendes når der er mange, entydige muligheder. Anvendes når if-sætningen ville blive for snørklet. Statement kan være en Integer Char String Bool Værdien efter hver case, skal være en konstant Både case og default skal eksplicit forlades med break Ved break fortsættes ved sætningen efter switch’en Jens Houmann - Nordjyllands Erhvervsakademi
86
Jens Houmann - Nordjyllands Erhvervsakademi
Switch switch (statement) { case option1: // Do something; break; case option2: // Do something else default: // Do something } Jens Houmann - Nordjyllands Erhvervsakademi
87
Jens Houmann - Nordjyllands Erhvervsakademi
Switch - eksempel switch (strValuta) { case ”Euro”: fltKurs= 7.43; break; case ”Dollar”: fltKurs= 6.32; default: fltKurs = 100; } Jens Houmann - Nordjyllands Erhvervsakademi
88
Jens Houmann - Nordjyllands Erhvervsakademi
Switch – eksempel (or) switch (Confirmation) { case ”y”: case ”yes”: case ”Yes”: case ”YES”: case ”Y”: Message.Text = ”Vi fremsender brochurer!”; break; } Jens Houmann - Nordjyllands Erhvervsakademi
89
Jens Houmann - Nordjyllands Erhvervsakademi
Switch –eksempel (or) switch (Confirmation.ToLower()) { case ”y”: case ”yes”: Message.Text = ”Vi sender brochurer!”; break; } Jens Houmann - Nordjyllands Erhvervsakademi
90
Switch – anvendt på regnemaskine
void Beregn(object Sender ,EventArgs E) { float Tal1, Tal2, Resultat; Tal1 = Convert.ToSingle(tbTal1.Text); Tal2 = Convert.ToSingle(tbTal2.Text); lblFejl.Text = ""; switch (tbRegneart.Text) case "+": Resultat = Tal1 + Tal2; break; case "-": Resultat = Tal1 - Tal2; case "*": Resultat = Tal1 * Tal2; case "/": Resultat = Tal1 / Tal2; default: Resultat = 0; lblFejl.Text = "Regnearten er ikke gyldig"; } lblResultat.Text = Resultat.ToString(); Jens Houmann - Nordjyllands Erhvervsakademi
91
Jens Houmann - Nordjyllands Erhvervsakademi
Afleveringsopgave Valutaberegner.aspx Jens Houmann - Nordjyllands Erhvervsakademi
92
Jens Houmann - Nordjyllands Erhvervsakademi
Kontrolstrukturer Sekvens Selektion Iteration Jens Houmann - Nordjyllands Erhvervsakademi
93
Jens Houmann - Nordjyllands Erhvervsakademi
Looping Tredje kontrolstruktur: iteration 4 muligheder: For Do..while While Foreach ..in Loop anvendes til at udføre en given sætning/sætningsblok: et givent antal gange Indtil en betingelse er opfyldt Jens Houmann - Nordjyllands Erhvervsakademi
94
Jens Houmann - Nordjyllands Erhvervsakademi
Looping - for For anvendes når antallet af gennemkørsler er kendt. for (initiering; hvor længe ; efter hvert gennemløb) { // Do something; } for (int intTal= 0; intTal <= 100; intTal++) lblUdTekst.Text += ”Max Bjævermose<br>”; Jens Houmann - Nordjyllands Erhvervsakademi
95
Jens Houmann - Nordjyllands Erhvervsakademi
Looping - for For…. void Udskriv(object Sender ,EventArgs E) { int intTal = 0; lblResultat.Text ="<br>"; for (intTal = 0; intTal <=10; intTal++) lblResultat.Text += "intTal er nu: " intTal.ToString() + "<br>"; } For.aspx Jens Houmann - Nordjyllands Erhvervsakademi
96
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et asp.net program der er i stand til at udskrive alle lige tal mellem 0 og 100 på skærmen. Programmet skal hedde ligetal.aspx Jens Houmann - Nordjyllands Erhvervsakademi
97
Jens Houmann - Nordjyllands Erhvervsakademi
LigeTal.aspx Page Language="C#" %> <script runat="server"> void Udskriv(object Sender, EventArgs E) { int intTal = 0; lblResultat.Text =""; for (intTal = 2; intTal <100; intTal= intTal + 2) lblResultat.Text += Convert.ToString(intTal) + "<BR>"; } </script> <html> <head> <title>Skriv de lige tal fra 0 -> 100</title> </head> <body> <form runat="server"> <asp:button ID="SkrivUd" runat="server" Text="Skriv Tal!" OnClick="Udskriv" /><br> <br>Og her kommer tallene <BR> <asp:label ID="lblResultat" Font-Size="20pt" runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
98
LigeTal.aspx – vejledende løsning
Jens Houmann - Nordjyllands Erhvervsakademi
99
Jens Houmann - Nordjyllands Erhvervsakademi
LigeTal2.aspx Page Language="C#" %> <script runat="server"> void Page_Load(object Sender, EventArgs E) { int intTal = 0; lblResultat.Text =""; for (intTal = 2; intTal <100; intTal= intTal + 2) lblResultat.Text += Convert.ToString(intTal) + "<BR>"; } </script> <html> <head> <title>Skriv de lige tal fra 0 -> 100</title> </head> <body> <h1>Og her kommer så tallene</h1> <asp:label ID="lblResultat" Font-Size="20pt" runat="server" /> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
100
Jens Houmann - Nordjyllands Erhvervsakademi
LigeTal2.aspx Jens Houmann - Nordjyllands Erhvervsakademi
101
Jens Houmann - Nordjyllands Erhvervsakademi
Looping - while Page Language="C#" %> <script runat="server"> void Udskriv(object Sender, EventArgs E) { int intTal = 0; while (intTal < 10) lblResultat.Text += Convert.ToString(intTal) + "<BR>"; intTal +=1; } </script> <html> <head> <title>Skriv Tallene fra 1-10</title> </head> <body> <form runat="server"> <asp:button ID="SkrivUd" runat="server" Text="Skriv Tal!" OnClick="Udskriv" /><br> <br>Og her kommer tallene <BR> <asp:label ID="lblResultat" Font-Size="20pt" runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
102
Jens Houmann - Nordjyllands Erhvervsakademi
Looping – do..while <script runat="server"> void Udskriv(object Sender, EventArgs E) { int intTal = 0; do lblResultat.Text += Convert.ToString(intTal) + "<BR>"; intTal +=1; } while (intTal < 10); } </script> <html> <head> <title>Skriv Tallene fra 1-10</title> </head> <body> <form runat="server"> <asp:button ID="SkrivUd" runat="server" Text="Skriv Tal!" OnClick="Udskriv" /><br> <br>Og her kommer tallene <BR> <asp:label ID="lblResultat" Font-Size="20pt" runat="server" /> </form> Jens Houmann - Nordjyllands Erhvervsakademi
103
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et program: Optil.aspx der indlæser et tal og udskriver alle lige tal op til og med det indtastede. Eks: der indtastes 10 der udskrives: 2,4,6,8,10 NB: 0 defineres som et positivt tal. Udarbejd programmet med for, while, do..while Jens Houmann - Nordjyllands Erhvervsakademi
104
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Jens Houmann - Nordjyllands Erhvervsakademi
105
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Se den vejledende løsning her: Jens Houmann - Nordjyllands Erhvervsakademi
106
Jens Houmann - Nordjyllands Erhvervsakademi
Optil.aspx Page Language="C#" %> <script runat="server"> void Udskriv(object Sender, EventArgs E) { int intTal = 0; int intOpTil; intOpTil = Convert.ToInt16(tbTalInd.Text); lblResultat.Text =""; while (intTal <= intOpTil) lblResultat.Text += Convert.ToString(intTal) + "<BR>"; intTal +=2; } </script> <html> <head> <title>Skriv de lige tal fra 1-n</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body> <form runat="server"> <asp:textbox ID="tbTalInd" runat="server" /> <br><br> <asp:button ID="SkrivUd" runat="server" Text="Skriv Tal!" OnClick="Udskriv" /><br> <br>Og her kommer tallene <BR> <asp:label ID="lblResultat" Font-Size="20pt" runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
107
Jens Houmann - Nordjyllands Erhvervsakademi
At holde øje med fejl! Lav en fil med navnet: web.config med følgende indhold: <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> Placér filen i roden af hjemmekataloget Nu vil serveren vise fejlen og linienummeret. Jens Houmann - Nordjyllands Erhvervsakademi
108
Function, metoder, subrutiner
<return type> <function name> (<optional parameters>) { // code } Eksempel: string minFunction() return ”Hej fra en function”; …. lblMinLabel.Text = minFunction(); Jens Houmann - Nordjyllands Erhvervsakademi
109
Jens Houmann - Nordjyllands Erhvervsakademi
Function Page Language="C#" %> <script runat="server"> void Page_Load(Object Sender, EventArgs e) { MultiplyNumbers(8,9); MultiplyNumbers(4,12); MultiplyNumbers(348,23); } void MultiplyNumbers(int intA, int intB) Response.Write(intA * intB + "<br>"); </script> <html> <body> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
110
Funktioner - functions
Page Language="C#" debug = true %> <script runat="server"> int Kvadrat(int intTal) { return intTal * intTal; } void Beregn(Object Sender, EventArgs E) int IntVaerdi = 0; Response.Write(Kvadrat(4) + "<br>"); Response.Write(Kvadrat(16) + "<br>"); </script> <html><body> <form runat="server"> <asp:button OnClick="Beregn" Text="Tryk Her!" runat="server" /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
111
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et program: Moms.aspx, der indlæser et beløb (evt. med 2 decimaler)og ved et tryk på en knap, adderer 25% moms til beløbet og udskriver dette. Beregningen skal foretages i en function. Jens Houmann - Nordjyllands Erhvervsakademi
112
Jens Houmann - Nordjyllands Erhvervsakademi
Moms.aspx Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
113
Jens Houmann - Nordjyllands Erhvervsakademi
Web-Server Controls RadioButton Button CheckBox ListBox TextBox Label Calendar M.fl. Jens Houmann - Nordjyllands Erhvervsakademi
114
Jens Houmann - Nordjyllands Erhvervsakademi
Radiobutton Skal placeres i en <form runat=”server”> Består af en radiobuttonlist og et antal listitem <asp:radiobuttonlist id=”Koen" runat="server"> <asp:listitem>Mand</asp:listitem> <asp:listitem>Kvinde</asp:listitem> </asp:radiobuttonlist> Jens Houmann - Nordjyllands Erhvervsakademi
115
Jens Houmann - Nordjyllands Erhvervsakademi
Kønsbestemmelse <script Language="C#" Runat="server"> void UdskrivKoen(object Sender, EventArgs e) { if (rbKoen.SelectedItem.Value == "Mand") lblTekst.Text = "Du er en mand!"; } else lblTekst.Text = "Du er en kvinde!"; </script> <body> <form Runat="server"> <p>Angiv køn:</p> <asp:RadioButtonList runat="server" ID="rbKoen"> <asp:ListItem Selected="true">Mand</asp:ListItem> <asp:ListItem>Kvinde</asp:ListItem> </asp:RadioButtonList> <asp:Button runat="server" OnClick="UdskrivKoen" Text="Tryk her!"></asp:Button><br> <asp:Label runat="server" ID="lblTekst"></asp:Label> </form> Jens Houmann - Nordjyllands Erhvervsakademi
116
Kønsbestemmelse – Radiobutton1.aspx
Jens Houmann - Nordjyllands Erhvervsakademi
117
Kønsbestemmelse med autopostback radiobutton2.aspx
Page Language="C#" ContentType="text/html" %> <html> <head> <script Language="C#" Runat="server"> void UdskrivKoen(object Sender, EventArgs e) { if (rbKoen.SelectedItem.Value == "Mand") lblTekst.Text = "Du er en mand!"; } else lblTekst.Text = "Du er en kvinde!"; </script> </head> <body> <form Runat="server"> <p>Angiv køn:</p> <asp:RadioButtonList OnSelectedIndexChanged="UdskrivKoen" AutoPostBack="true" runat="server" ID="rbKoen"> <asp:ListItem Selected="true">Mand</asp:ListItem> <asp:ListItem>Kvinde</asp:ListItem> </asp:RadioButtonList> <asp:Button runat="server" OnClick="UdskrivKoen" Text="Tryk her!"></asp:Button><br> <br> <asp:Label runat="server" ID="lblTekst"></asp:Label> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
118
Jens Houmann - Nordjyllands Erhvervsakademi
Radiobuttons <script language="C#" runat="server"> void Page_Load() { if (Page.IsPostBack) { switch(Destination.SelectedItem.Value) case "Barcelona": Message.Text = "You selected Spain's lively Catalan city"; break; case "Oslo": Message.Text = "Experience the majesty of Norway's capital city"; case "Lisbon": Message.Text = "Portugal's famous seaport and cultural hub"; default: Message.Text = "you did not select a destination we travel to"; } </script> <html> <head></head> <body> <form runat="server"> Select your choice of destination: <br><br> <asp:radiobuttonlist id="Destination" runat="server"> <asp:listitem>Barcelona</asp:listitem> <asp:listitem>Oslo</asp:listitem> <asp:listitem>Lisbon</asp:listitem> </asp:radiobuttonlist> <input type="submit" value="Submit Choice"> <asp:label id="Message" runat="server"/> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
119
Jens Houmann - Nordjyllands Erhvervsakademi
Radiobuttons Jens Houmann - Nordjyllands Erhvervsakademi
120
Jens Houmann - Nordjyllands Erhvervsakademi
Radio Buttons Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> <html> <head> <script Language="C#" Runat="server"> void RadioChanged(object sender, EventArgs e) { label.Text = "Method of payment: "; if (cash.Checked) label.Text += cash.Text; if (cheque.Checked) label.Text += cheque.Text; if (card.Checked) label.Text += card.Text; } </script> </head> <body> <form Runat="server"> <p>Select method of payment:</p> <asp:RadioButton ID="cash" Text="cash" GroupName="payment" OnCheckedChanged="RadioChanged" AutoPostBack="true" Runat="server" /><br> <asp:RadioButton ID="cheque" Text="cheque" GroupName="payment" <asp:RadioButton ID="card" Text="credit card" GroupName="payment" Runat="server" /><br><br> <asp:Label ID="label" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
121
Jens Houmann - Nordjyllands Erhvervsakademi
Radio Buttons Jens Houmann - Nordjyllands Erhvervsakademi
122
Jens Houmann - Nordjyllands Erhvervsakademi
Radiobuttons Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> <html> <head> <script Language="C#" Runat="server"> void RadioChanged(object sender, EventArgs e) { label.Text = "Method of payment: "; if (cash.Checked) label.Text += cash.Text; if (cheque.Checked) label.Text += cheque.Text; if (card.Checked) label.Text += card.Text; } </script> </head> <body> <form Runat="server"> <p>Select method of payment:</p> <asp:RadioButton ID="cash" Text="cash" GroupName="payment" OnCheckedChanged="RadioChanged" AutoPostBack="true" Runat="server" /><br> <asp:RadioButton ID="cheque" Text="cheque" GroupName="payment" <asp:RadioButton ID="card" Text="credit card" GroupName="payment" Runat="server" /><br><br> <asp:Label ID="label" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
123
Jens Houmann - Nordjyllands Erhvervsakademi
Radiobutton Jens Houmann - Nordjyllands Erhvervsakademi
124
Random – tilfældige tal
void FindTilfTal(object Sender ,EventArgs E) { int intTal = 0; Random Randomobj = new Random(); // definition af randomobjekt intTal = Randomobj.Next(1,501); // returnerer et tilfældigt tal mellem 1-500 lblMessage.Text=Convert.ToString(intTal); } Jens Houmann - Nordjyllands Erhvervsakademi
125
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et program: tilf_tal.aspx der simulerer 6 terningkast og skriver disse på skærmen. Jens Houmann - Nordjyllands Erhvervsakademi
126
Jens Houmann - Nordjyllands Erhvervsakademi
Vejledende løsning void FindTilfTal(object Sender ,EventArgs E) { int intTal = 0; lblMessage.Text = "<br>"; Random Randomobj = new Random(); // definintion af et randomobjekt for (int intTaeller = 0; intTaeller < 6; intTaeller++) intTal = Randomobj.Next(1,7); // returnerer et tilfældigt tal mellem 1-6 lblMessage.Text+= intTal.ToString() + "<br>"; } Jens Houmann - Nordjyllands Erhvervsakademi
127
Jens Houmann - Nordjyllands Erhvervsakademi
Øvelse Undersøg hvad programmet function.aspx gør Læg især vægt på: CheckOutDate = DateTime.Now; return CheckOutDate + TimeSpan.FromDays(14); DateTime FindDueDate(DateTime CheckOutDate) Jens Houmann - Nordjyllands Erhvervsakademi
128
Jens Houmann - Nordjyllands Erhvervsakademi
Function <script Language="c#" runat="server"> void Page_Load() { DateTime DueDate; DateTime CheckOutDate; CheckOutDate = DateTime.Now; DueDate = FindDueDate(CheckOutDate); message1.Text = "<br>Your books were checked OUT on " + CheckOutDate; message2.Text = "<br>Your books are due on " + DueDate.ToString("d"); } DateTime FindDueDate(DateTime CheckOutDate) return CheckOutDate + TimeSpan.FromDays(14); </script> <html> <head> <title>Sample Function Page</title> </head> <body> <h2>Thank you for using the On-Line Library.</h2> <asp:label id="message1" runat="server"/> <asp:label id="message2" runat="server"/> Jens Houmann - Nordjyllands Erhvervsakademi
129
Jens Houmann - Nordjyllands Erhvervsakademi
Function Jens Houmann - Nordjyllands Erhvervsakademi
130
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave – oversaet.aspx Lav et program der er i stand til at modtage et varegruppenr mellem 1-3, og derefter udskrive en varegruppebetegnelse på det valgte sprog. Hvis varegruppe er ugyldig gives fejlmeddelelse. Sproget kan være: dansk, engelsk eller tysk. Sproget vælges med en radiobutton. Varegrupperne ses på næste side: Jens Houmann - Nordjyllands Erhvervsakademi
131
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave oversaet.aspx Gruppenr Dansk Engelsk Tysk 1 Cykler Bicycles Fahrräder 2 Biler Cars Autos 3 Svampe Mushrooms Piltzen Jens Houmann - Nordjyllands Erhvervsakademi
132
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave oversaet.aspx Jens Houmann - Nordjyllands Erhvervsakademi
133
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave oversaet.aspx Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
134
Jens Houmann - Nordjyllands Erhvervsakademi
If-øvelse Hvad vil der stå på skærmen efter følgende program er afviklet? Page Language="C#" debug = true %> <script runat="server"> void Beregn(Object Sender, EventArgs E) { lblResultat.Text =""; int TalA, TalB, TalC; bool Sand1 = false; TalA = 5; TalB = 0; TalC = -5; if (TalA > TalB) lblResultat.Text += "A "; } if (TalA >= 0 && TalB <1) lblResultat.Text += "B "; if (TalB == 0 && TalC >0 || TalA >10) lblResultat.Text += "C "; if (!Sand1) lblResultat.Text += "D "; </script> <html><body> <form runat="server"> <asp:button OnClick="Beregn" Text="Gør noget!" BackColor="#3366FF" runat="server" /><br><br> Resultatet er: <asp:label ID="lblResultat" runat="server" Text="Betingelsesberegner!" /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
135
Jens Houmann - Nordjyllands Erhvervsakademi
If-øvelse Jens Houmann - Nordjyllands Erhvervsakademi
136
Jens Houmann - Nordjyllands Erhvervsakademi
Porto Lav et program der indlæser et brevs vægt i gram og udskriver korrekt porto ud fra følgende tabel: Jens Houmann - Nordjyllands Erhvervsakademi
137
Jens Houmann - Nordjyllands Erhvervsakademi
Porto Jens Houmann - Nordjyllands Erhvervsakademi
138
Jens Houmann - Nordjyllands Erhvervsakademi
Porto Se koden her Se det køre her Jens Houmann - Nordjyllands Erhvervsakademi
139
Jens Houmann - Nordjyllands Erhvervsakademi
Command Page Language="C#" %> <html> <head> <script Language="C#" Runat="server"> void ButtonClick(object sender, CommandEventArgs e) { text.ForeColor = System.Drawing.Color.FromName(e.CommandName); } </script> </head> <body> <form Runat="server"> <asp:Label ID="text" Text="Sample text" Runat="server" /><br><br> <asp:Button Text="Red" CommandName="Red" OnCommand="ButtonClick" Runat="server" /> <asp:Button Text="Blue" CommandName="Blue" OnCommand="ButtonClick" Runat="server" /> <asp:Button Text="Green" CommandName="Green" OnCommand="ButtonClick" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
140
Jens Houmann - Nordjyllands Erhvervsakademi
Command Jens Houmann - Nordjyllands Erhvervsakademi
141
Jens Houmann - Nordjyllands Erhvervsakademi
TextBox - MultiLine Jens Houmann - Nordjyllands Erhvervsakademi
142
Jens Houmann - Nordjyllands Erhvervsakademi
TextBox - MultiLine Page Language="C#" %> <html> <head> <script Language="C#" Runat="server"> void HandleText(object sender, EventArgs e) { lblLabel1.Text = "TextMode=" + tbBox.TextMode + ", Rows=" + tbBox.Rows + ", Columns=" + tbBox.Columns + ", Wrap=" + tbBox.Wrap; lblLabel2.Text = tbBox.Text; } </script> </head> <body> <form Runat="server"> <asp:TextBox ID="tbBox" TextMode="MultiLine" Rows="3" Columns="15" OnTextChanged="HandleText" AutoPostBack="true" Runat="server" /> </form> Oplysninger om tekstboksen: <asp:Label ID="lblLabel1" Runat="server" /><br> Den indtastede tekst var: <asp:Label runat="server" ID="lblLabel2"></asp:Label> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
143
Jens Houmann - Nordjyllands Erhvervsakademi
CheckBox Jens Houmann - Nordjyllands Erhvervsakademi
144
Jens Houmann - Nordjyllands Erhvervsakademi
CheckBox Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> <html> <head> <script Language="C#" Runat="server"> void ButtonClicked(object sender, EventArgs e) { label.Text = "You bought: "; if (apples.Checked) label.Text += "Apples "; if (pears.Checked) label.Text += "Pears "; if (bananas.Checked) label.Text += "Bananas "; } </script> </head> <body> <form Runat="server"> <asp:CheckBox ID="apples" Text="Apples" Runat="server" /><br> <asp:CheckBox ID="pears" Text="Pears" Runat="server" /><br> <asp:CheckBox ID="bananas" Text="Bananas" Runat="server" /><br> <asp:Button Text="Buy" OnClick="ButtonClicked" Runat="server" /> <br><br> <asp:Label ID="label" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
145
Jens Houmann - Nordjyllands Erhvervsakademi
CheckBox Jens Houmann - Nordjyllands Erhvervsakademi
146
Jens Houmann - Nordjyllands Erhvervsakademi
CheckBox <script runat="server" language="C#"> void Page_Load() { string msg = "You have selected the following items:<br />"; if (check1.Items[0].Selected) { msg = msg + check1.Items[0].Text + "<br />"; } if (check1.Items[1].Selected) { msg = msg + check1.Items[1].Text + "<br />"; if (check1.Items[2].Selected) { msg = msg + check1.Items[2].Text + "<br />"; Message.Text = msg; </script> <html> <head> <title>Check Box List Example</title> </head> <body> <asp:label id="Message" runat="server" /> <br /><br /> Which city do you wish to look at hotels for? <form runat="server"> <asp:checkboxlist id="check1" runat="server"> <asp:listitem id="option1" runat="server" value="Madrid" /> <asp:listitem id="option2" runat="server" value="Oslo" /> <asp:listitem id="option3" runat="server" value="Lisbon" /> </asp:checkboxlist> <input type="Submit"> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
147
Jens Houmann - Nordjyllands Erhvervsakademi
ListBox Jens Houmann - Nordjyllands Erhvervsakademi
148
Jens Houmann - Nordjyllands Erhvervsakademi
ListBox Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> <html> <head> <script Language="C#" Runat="server"> void ButtonClick(object sender, EventArgs e) { lab.Text = "The selected country has the international car code "; if (list.SelectedItem != null) lab.Text += list.SelectedItem.Value; } </script> </head> <body> <form Runat="server"> <asp:ListBox ID="list" Rows="3" Runat="server" > <asp:ListItem Text="United States" Value="USA" Runat="server" /> <asp:ListItem Text="Great Britain" Value="GB" Runat="server" /> <asp:ListItem Text="Germany" Value="D" Runat="server" /> <asp:ListItem Text="France" Value="F" Runat="server" /> <asp:ListItem Text="Italy" Value="I" Runat="server" /> </asp:ListBox><br><br> <asp:Button OnClick="ButtonClick" Text="Show" Runat="server" /><br> <asp:Label ID="lab" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
149
Jens Houmann - Nordjyllands Erhvervsakademi
ListBox Jens Houmann - Nordjyllands Erhvervsakademi
150
Jens Houmann - Nordjyllands Erhvervsakademi
ListBox Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> Import Namespace="System.Collections" %> <html> <head> <script Language="C#" Runat="server"> void Fill(object sender, EventArgs e) { SortedList data = new SortedList(); data["United States"] = "USA"; data["Great Britain"] = "GB"; data["Germany"] = "D"; data["France"] = "F"; data["Italy"] = "I"; list.DataSource = data; list.DataTextField = "Key"; // take the text from the Key property of the items list.DataValueField = "Value"; // take the value from the Value property of the items list.DataBind(); } void Show(object sender, EventArgs e) { lab.Text = "The selected country has the international car code "; if (list.SelectedItem != null) lab.Text += list.SelectedItem.Value; </script> </head> <body> <form Runat="server"> <asp:ListBox ID="list" Rows="3" Runat="server" AutoPostBack="true" OnSelectedIndexChanged="Show" /> <br><br> <asp:Button OnClick="Fill" Text="Fill" Runat="server" /> <asp:Label ID="lab" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
151
Jens Houmann - Nordjyllands Erhvervsakademi
ListBox Jens Houmann - Nordjyllands Erhvervsakademi
152
ListBox – listpage2.aspx
<script runat="server" language="C#"> void Page_Load() { string msg = "You have selected: <br />"; if (list1.Items[0].Selected) { msg = msg + list1.Items[0].Text + "<br />"; } if (list1.Items[1].Selected) { msg = msg + list1.Items[1].Text + "<br />"; if (list1.Items[2].Selected) { msg = msg + list1.Items[2].Text + "<br />"; Message.Text = msg; </script> <html> <head> <title>Drop Down List Example</title> </head> <body> <asp:label id="Message" runat="server"/> <br /> <form runat="server"> Which city do you wish to look at hotels for?<br /><br /> <asp:listbox id="list1" runat="server" selectionmode="multiple"> <asp:listitem>Madrid</asp:listitem> <asp:listitem>Oslo</asp:listitem> <asp:listitem>Lisbon</asp:listitem> </asp:listbox> <br /><br /><br /><br /> <input type="Submit"> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
153
Jens Houmann - Nordjyllands Erhvervsakademi
Drop Down Jens Houmann - Nordjyllands Erhvervsakademi
154
Jens Houmann - Nordjyllands Erhvervsakademi
Drop Down Page Language="C#" ContentType="text/html" ResponseEncoding="Unicode" %> <html> <head> <script Language="C#" Runat="server"> void HandleSelect(object sender, EventArgs e) { lab.Text = "The selected country has the international car code "; if (list.SelectedItem != null) lab.Text += list.SelectedItem.Value; } </script> </head> <body> <form Runat="server"> <asp:DropDownList ID="list" OnSelectedIndexChanged="HandleSelect" AutoPostBack="true" Runat="server" > <asp:ListItem Text="United States" Value="USA" /> <asp:ListItem Text="Great Britain" Value="GB" /> <asp:ListItem Text="Germany" Value="D" /> <asp:ListItem Text="France" Value="F" /> <asp:ListItem Text="Italy" Value="I" /> </asp:DropDownList><br> <asp:Label ID="lab" Runat="server" /> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
155
Jens Houmann - Nordjyllands Erhvervsakademi
DropDown Jens Houmann - Nordjyllands Erhvervsakademi
156
Jens Houmann - Nordjyllands Erhvervsakademi
DropDown <script runat="server" language="C#"> void Page_Load() { if (Page.IsPostBack) { Message.Text = "You have selected " + list1.SelectedItem.Value; } </script> <html> <head> <title>Drop Down List Example</title> </head> <body> <asp:label id="Message" runat="server"/> <br /> <form runat="server"> Which city do you wish to look at hotels for?<br /><br /> <asp:dropdownlist id="list1" runat="server"> <asp:listitem>Madrid</asp:listitem> <asp:listitem>Oslo</asp:listitem> <asp:listitem>Lisbon</asp:listitem> </asp:dropdownlist> <br /><br /><br /><br /> <input type="Submit"> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
157
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et forenklet bestillingsbillede til pizzaria: L'alito del cane Når der trykkes på bestil, skal bestillingen udskrives. Pizza-type skal vælges fra dropdownliste. Antal er en tekstbox. Lav evt. en checkbox til markering af levering. Programmet skal hedde: Lalito.aspx Jens Houmann - Nordjyllands Erhvervsakademi
158
Jens Houmann - Nordjyllands Erhvervsakademi
L’alito del cane Jens Houmann - Nordjyllands Erhvervsakademi
159
Jens Houmann - Nordjyllands Erhvervsakademi
L’alito del cane Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
160
Jens Houmann - Nordjyllands Erhvervsakademi
Knap så sjovt! Jens Houmann - Nordjyllands Erhvervsakademi
161
Jens Houmann - Nordjyllands Erhvervsakademi
Knap så sjovt Page Language="C#" debug = true %> <script runat="server"> void Skift1(Object Sender, EventArgs E) { Knap2.Text ="Tryk HER!"; Knap1.Text = "Vent lidt!"; } void Skift2(Object Sender, EventArgs E) Knap3.Text ="Tryk HER!"; Knap2.Text = "Vent lidt!"; void Skift3(Object Sender, EventArgs E) Knap1.Text ="Vent lidt!"; Knap3.Text = "Vent lidt!"; Knap4.Text = "Tryk HER!"; Knap4.Visible=true; void Skift4(Object Sender, EventArgs E) Knap1.Text ="Tryk HER!"; Knap4.Visible=false; </script> <html><body> <form runat="server"> Bare følg instruktionerne <asp:button ID="Knap1" OnClick="Skift1" Text="Tryk HER" BackColor="#CC0000" runat="server" /> <asp:button ID="Knap2" OnClick="Skift2" Text="Vent lidt" BackColor="#CC0000" runat="server" /> <asp:button ID="Knap3" OnClick="Skift3" Text="Vent lidt" BackColor="#CC0000" runat="server" /> <asp:button ID="Knap4" OnClick="Skift4" Text="Vent lidt" BackColor="#CC0000" Visible="false" runat="server" /><br><br> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
162
Jens Houmann - Nordjyllands Erhvervsakademi
Ændring af labels Jens Houmann - Nordjyllands Erhvervsakademi
163
Jens Houmann - Nordjyllands Erhvervsakademi
Controls til Labels Page Language="C#" ContentType="text/html" ResponseEncoding="iso " %> <script runat="server"> void Skift(object Sender ,EventArgs E) { navn.Text= "Sally Sørøver"; ting.Text ="Lænkehund"; sted.Text = "kongrescenter"; } void Skiftigen(object Sender ,EventArgs E) navn.Text= "Tage Tumpenakke"; ting.Text ="Stegepande"; sted.Text = "tropiske vandland"; void Skiftigenigen(object Sender ,EventArgs E) navn.Text= "Max Bjævermose"; ting.Text ="TINTIN-bog"; sted.Text = "sydlige ø-hav"; </script> <html> <head> <title>Controls</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body> Hej med dig <ASP:label Id="navn" runat="server" Text="Søren Sømand"/>, tak for den tilsendte <asp:label ID="ting" runat="server" Text="brochure" BackColor="red"/> den gjorde stor lykke her i det lille <asp:label ID="sted" runat="server" Text="hus på prærien" ForeColor="blue" /> hvor vi bor. <form runat="server"> <asp:button ID="btSubmit1" Text="Skift!" onClick="Skift" runat="server"/> <asp:button ID="btSubmit2" Text="Skift igen!" onClick="Skiftigen" runat="server"/> <asp:button ID="btSubmit3" Text="Skift igen-igen!" onClick="Skiftigenigen" runat="server"/> <br><br> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
164
Jens Houmann - Nordjyllands Erhvervsakademi
Enable og Disable Jens Houmann - Nordjyllands Erhvervsakademi
165
Jens Houmann - Nordjyllands Erhvervsakademi
Enable og Disable Page Language="C#" ContentType="text/html"%> <script runat="server"> void Skift(object Sender ,EventArgs E) { tbNavn.Enabled = false; rbKoen.Enabled = false; } void Skiftigen(object Sender ,EventArgs E) tbNavn.Enabled = true; rbKoen.Enabled = true; </script> <html> <head> <title>Controls</title> </head> <body> <h1>Enable og disable</h1> <form runat="server"> Indtast navn: <asp:TextBox runat="server" ID="tbNavn" Enabled="true"></asp:TextBox><br> Vælg køn: <asp:RadioButtonList runat="server" ID="rbKoen"> <asp:ListItem Selected="true">Mand</asp:ListItem> <asp:ListItem>Kvinde</asp:ListItem> </asp:RadioButtonList> <asp:button ID="btSubmit1" Text="Skift!" onClick="Skift" runat="server"/> <asp:button ID="btSubmit2" Text="Skift igen!" onClick="Skiftigen" runat="server"/> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
166
Attributter til TextBoxe
MaxLength ReadOnly Visible TabIndex ToolTip Enabled Se et eksempel her Jens Houmann - Nordjyllands Erhvervsakademi
167
Attributter til TextBoxe
Page Language="C#" ContentType="text/html"%> <script runat="server"> void Skift(object Sender ,EventArgs E) { tbNavn.Visible = false; } void Skiftigen(object Sender ,EventArgs E) tbNavn.Visible = true; tbNavn.ReadOnly = true; void Skiftigenigen(object Sender ,EventArgs E) tbNavn.ReadOnly = false; </script> Jens Houmann - Nordjyllands Erhvervsakademi
168
Attributter til TextBoxe
Jens Houmann - Nordjyllands Erhvervsakademi
169
Jens Houmann - Nordjyllands Erhvervsakademi
Position.html Jens Houmann - Nordjyllands Erhvervsakademi
170
Jens Houmann - Nordjyllands Erhvervsakademi
Position.html <html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body> <h1>Afprøvning af position</h1> <br> <img src="../Test/ABE.jpg" style="position:absolute; top:100px; left:500px; z-index:0"> <font size="+5" style="position:absolute; top:100px; left:500px; z-index:1">Smil!</font> <form> <input type="text" style="position:absolute; top:100px; left:150px; "/> <input type="submit" style="position:absolute; top:100px; left:50px; " value="Tryk her"/> </form> <img src="Billeder/Logo.jpg" style="position:absolute; top:75%; left:75%; "> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
171
Positionsbestemmelse på form
En implementering af cascading stylesheet (ikke ASP.Net) <asp:Label runat="server" Text="UserId:" style="Z-INDEX: 101; LEFT: 100px; POSITION: absolute; TOP: 70px"></asp:Label> Vil placere labelen 100 pixels fra venstrekanten og 70 pixels fra toppen. Kan bruges som erstatning for tabeller til positionering af alle elementer (også HTML) Kræver at ALT styres med POSITION. Jens Houmann - Nordjyllands Erhvervsakademi
172
Jens Houmann - Nordjyllands Erhvervsakademi
Opgaver Lav denne form. Giv brugeren mulighed for at vælge mellem 4 vilkårlige biblioteker Fortrydknappen skal rense felterne Passwordindtastning skal angives med * Tryk på den ene radiobutton skal deaktivere den anden Når der trykkes på Opret låner, skal der udskrives en kvittering, indeholdende det indtastede. Jens Houmann - Nordjyllands Erhvervsakademi
173
Jens Houmann - Nordjyllands Erhvervsakademi
Opret Låner Se eksemplet her Jens Houmann - Nordjyllands Erhvervsakademi
174
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Validering foretages kun hvis feltet er udfyldt ControlToValidate og ErrorMessage skal være til stede. Typer: Required Field Compare Range Regular Expression Custom Validation Alle opståede fejl findes i ValidationSummary. Jens Houmann - Nordjyllands Erhvervsakademi
175
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Brugere og vejrprognoser er uforudsigelige. Kan blive en meget lang If…then…else sætning I web-programmering er dobbeltfejl besværlige Validator controls findes i System.Web.UI.WebControls Validator controls er kun supplement til kontroller – de giver ikke selv input. Validation control virker på både client og server. Når clienten har godkendt siden sendes den til server som så evt. kan lave et opslag mod en database. Validering stiller krav til Browseren – skal være IE 4.0+ eller Netscape, da der afvikles DHTML. Når man laver view Source, ses en række nye koder. Jens Houmann - Nordjyllands Erhvervsakademi
176
Validering - RequiredField
Jens Houmann - Nordjyllands Erhvervsakademi
177
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Page Language="C#" %> <script runat="server"> void Submit(object Sender ,EventArgs E) { if (Page.IsValid) lblMessage.Text = "Det er bare helt i orden!"; } </script> <html><body> <form runat="server"> <asp:Label id="lblMessage" runat="server" /><p> Indtast dit navn (skal udfyldes): <asp:TextBox id="tbFName" runat="server" /><br> <asp:RequiredFieldValidator runat="server" ControlToValidate="tbFName" ErrorMessage="Navnefeltet skal udfyldes"/><p> <asp:Button id="tbSubmit" runat="server" Text="Tryk her!" OnClick="Submit" /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
178
Validering - RangeValidator
Jens Houmann - Nordjyllands Erhvervsakademi
179
Validering - RangeValidator
Page Language="C#" %> <html> <head> <title>Range Validator</title> </head> <body> <h1>Range Validator</h1> <form runat="server"> Indtast et nr : <asp:TextBox ID="tbDataInd" runat="server"></asp:TextBox> <asp:RangeValidator ControlToValidate="tbDataInd" MinimumValue="1" MaximumValue="4711" Type="Integer" ErrorMessage="Indtastning skal være " runat="server"> </asp:RangeValidator><br> <asp:Button ID="btSubmit" runat="server" Text="Tryk her!"></asp:Button> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
180
Validering – Range Validator
Jens Houmann - Nordjyllands Erhvervsakademi
181
Validering – Range Validator
Page Language="C#" %> <html> <head> <title>Range Validator</title> </head> <body> <h1>Range Validator</h1> <form runat="server"> Indtast dato i 2006: <asp:TextBox ID="tbDataInd" runat="server" ></asp:TextBox> <asp:RangeValidator ControlToValidate="tbDataInd" MinimumValue="01/01/2006" MaximumValue="31/12/2006" Type="Date" ErrorMessage="Dato skal være i 2006" runat="server"> </asp:RangeValidator><br> <asp:Button ID="btSubmit" runat="server" Text="Tryk her!"></asp:Button> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
182
Validering – Compare Validator
Jens Houmann - Nordjyllands Erhvervsakademi
183
Validering - CompareValidator
Page Language="C#" %> <html> <head> <title>Compare Validator</title> </head> <body> <h1>Compare Validator</h1> <form runat="server"> Indtast Password <asp:TextBox ID="tbDataInd1" TextMode="Password" runat="server" ></asp:TextBox><br> Gentag Password <asp:TextBox ID="tbDataInd2" TextMode="Password" runat="server" ></asp:TextBox><br> <asp:CompareValidator ControlToValidate="tbDataInd1" ControlToCompare="tbDataInd2" ErrorMessage="Passwords ikke ens!" runat="server"> </asp:CompareValidator><br> <asp:Button ID="btSubmit" runat="server" Text="Tryk her!"></asp:Button> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
184
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Jens Houmann - Nordjyllands Erhvervsakademi
185
Validering - CompareValidering
Jens Houmann - Nordjyllands Erhvervsakademi
186
Validering - CompareValidator
Page Language="C#" %> <html> <head><title>Compare Validator</title></head> <body> <h1>Compare Validator</h1> <form runat="server"> Indtast projektets startdato: <asp:TextBox ID="tbDataInd1" runat="server" ></asp:TextBox><br> Indtast projektets slutdato: <asp:TextBox ID="tbDataInd2" runat="server" ></asp:TextBox><br> <asp:CompareValidator ControlToValidate="tbDataInd1" ControlToCompare="tbDataInd2" Display="Dynamic" Operator="LessThanEqual" Type="Date" ErrorMessage="Slutdato skal ligge efter startdato!" runat="server"> </asp:CompareValidator><br> <asp:Button ID="btSubmit" runat="server" Text="Tryk her!"></asp:Button> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
187
Validering - CompareValidator
Jens Houmann - Nordjyllands Erhvervsakademi
188
Validering - CompareValidator
Page Language="C#"%> <script runat=server> void Button_Click(Object sender, EventArgs e) { if (IsValid) Response.Redirect( "ThankYou.aspx" ); } </Script> <html> <head><title>CompareValidatorValue.aspx</title></head> <body> <form Runat="Server"> Minimum Bid: $2.344,89 <br> Enter your bid: <asp:TextBox id="txtBidAmount" Columns="8" Runat="Server"/> <asp:CompareValidator ControlToValidate="txtBidAmount" ValueToCompare="2.344,89" Display="Dynamic" Text="Your bid must be greater than the minimum bid!" Operator="GreaterThan" Type="Currency" Runat="Server" /> <p> Jens Houmann - Nordjyllands Erhvervsakademi
189
Validering – Regulære udtryk
Anvendes til at validere: -adresser Telefonnumre URL’er Kundenumre/varenumre Mm 3 grundlæggende klasser: RegEx Match MatchCollection Jens Houmann - Nordjyllands Erhvervsakademi
190
Validering – Regulære udtryk
Regex objRegex; objRegex = new Regex( ”M[uiaå]s ); If (objRegEx.IsMatch( ”Mus” )) Ok = true; Dimensionerer et regularexpression object Definerer gyldige værdier Undersøger om Mus er gyldig værdi. Jens Houmann - Nordjyllands Erhvervsakademi
191
Validering – Regulære udtryk
Karakterklasse definerer gyldige værdier [AE]ffekt Vil acceptere Affekt og Effekt Definition for klokken engelsk format: 12:59pm [01][0-9]:[0-5][0-9][ap]m ^ (cirkumfleks) vil angive ikke gyldige værdier H[^a]t Gyldige: Hot, Hit, Hut, men ikke Hat Jens Houmann - Nordjyllands Erhvervsakademi
192
Validering – Regulære udtryk
[A-Z].[1-9] Er følgende gyldige: B.1 A38 U2 Z.1 Jens Houmann - Nordjyllands Erhvervsakademi
193
Validering – Regulære udtryk
Metakarakterer: . Alle tegn undtagen \n \w Alle tal eller bogstaver \W Alle tegn der ikke er tal eller bogstaver \s Alle whitespace tegn (mellemrum, nylinie, tab) \S Alle ikke whitespacetegn \d Ethvert ciffer 0-9 \D Alt undtagen ciffrene 0-9 Jens Houmann - Nordjyllands Erhvervsakademi
194
Validering – Regulære udtryk
Metakarakterer til positionsbestemmelse: ^ begyndelsen af en streng $ slutningen af en streng \A begyndelsen af en streng i multilinemode \Z slutningen af en streng i multilinemode \b ordgrænse \blet\b = kun ordet let \Asecret\z strengen indeholder kun secret Jens Houmann - Nordjyllands Erhvervsakademi
195
Validering – Regulære udtryk
Quantifiers <p>|<br> Vil matche P-tag ELLER Break * Match 0 eller flere gange + Match 1 eller flere gange ? Match 0 eller 1 gang {n} Match ved præcis n gange {n,} Match mindst n gange {n,m} Match mindst n gange og højst m gange Jens Houmann - Nordjyllands Erhvervsakademi
196
Validering – Regulære udtryk
Jens Houmann - Nordjyllands Erhvervsakademi
197
Validering – Regulære udtryk
Jens Houmann - Nordjyllands Erhvervsakademi
198
Validering – Regulære udtryk
Validering af adresse: Address:<br> <asp:TextBox id="Our " runat="server" /> <asp:RegularExpressionValidator id="Valid " ControlToValidate="Our " ErrorMessage="Invalid Entry" runat="server" /><br> Jens Houmann - Nordjyllands Erhvervsakademi
199
Jens Houmann - Nordjyllands Erhvervsakademi
ValidationSummary Jens Houmann - Nordjyllands Erhvervsakademi
200
Jens Houmann - Nordjyllands Erhvervsakademi
ValidationSummary Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
201
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave (kundenr.aspx) Lav et program der modtager et navn på mindst 8 tegn og et kundenr. Kundenr skal opbygges således: K eller C (Kontant/CreditCard) Type: a,b,c Nr på 4 cifre Afsluttes med + Eksempel på gyldigt nr: Ca4711+ Jens Houmann - Nordjyllands Erhvervsakademi
202
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave kundenr.aspx <form runat="server"> Indtast kundenavn: <asp:TextBox runat="server" ID="tbNavn"/><br> Indtast kundenr: <asp:TextBox runat="server" ID="tbKundeNr" Width="60"/><br> <asp:Button runat="server" ID="btSubmit" Text="Tryk for oprettelse!" OnClick="Opret"/><br> <asp:RegularExpressionValidator runat="server" ControlToValidate="tbNavn" ErrorMessage="Kundenavn skal være mindst 8 tegn" ValidationExpression=".{8,}"> </asp:RegularExpressionValidator><br> ControlToValidate="tbKundeNr" ErrorMessage="Kundenummer skal overholde gældende standard - se manualen" ValidationExpression="\b[KC][abc]\d{4}[+]"> <asp:Label ID="lblTekst" runat="server"></asp:Label> </form> Jens Houmann - Nordjyllands Erhvervsakademi
203
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave kundenr.aspx Jens Houmann - Nordjyllands Erhvervsakademi
204
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Se koden til validering2.aspx Jens Houmann - Nordjyllands Erhvervsakademi
205
Jens Houmann - Nordjyllands Erhvervsakademi
Validering Jens Houmann - Nordjyllands Erhvervsakademi
206
Jens Houmann - Nordjyllands Erhvervsakademi
Validering View Source: Jens Houmann - Nordjyllands Erhvervsakademi
207
Jens Houmann - Nordjyllands Erhvervsakademi
Filer Afklaring Hvad er en fil? Hvad adskiller en fil fra en database? Hvornår anvender vi filer frem for databaser? Når ASP.NET kører anvender vi mange filer: Web-config Global.asax Filer kan indeholde kode som skal afvikles (file inclusion) Jens Houmann - Nordjyllands Erhvervsakademi
208
Jens Houmann - Nordjyllands Erhvervsakademi
Filer Server-side include giver mulighed for genbrug af kode. <!--#include file=fil.nvn”--> Eller <!--#include virtual file=”fil.nvn”--> Include kan ligge hvor som helst Skal have extension: Shtml, asp, asax, aspx (+et par stykker) Jens Houmann - Nordjyllands Erhvervsakademi
209
Jens Houmann - Nordjyllands Erhvervsakademi
Streams ……..er noget helt andet. Kan læse fra og skrive til harddisk, netværk. Streams er binære Ikke at forveksle med streaming. Anvender: textReader, TextWriter XMLTextReader, XMLTextWriter Jens Houmann - Nordjyllands Erhvervsakademi
210
Jens Houmann - Nordjyllands Erhvervsakademi
Streams Jens Houmann - Nordjyllands Erhvervsakademi
211
Streams - Filoplysninger
void Page_Load(Object Sender,EventArgs e ) { FileInfo f = new FileInfo(Server.MapPath("filopl.aspx")); lblMessage.Text="Fil information<br>"+"<b>Navn: </b>"+f.Name+"<br>"; lblMessage.Text += "<b>Sti: </b>" + f.DirectoryName + "<br>"; lblMessage.Text += "<b>Sidst tilgået: </b>" + f.LastAccessTime +"<br>"; lblMessage.Text += "<b>Sidst ændret: </b>" + f.LastWriteTime + "<br>"; lblMessage.Text += "<b>Længde: </b>" + f.Length + " bytes<p>"; } </script> Jens Houmann - Nordjyllands Erhvervsakademi
212
Jens Houmann - Nordjyllands Erhvervsakademi
Streams Jens Houmann - Nordjyllands Erhvervsakademi
213
Jens Houmann - Nordjyllands Erhvervsakademi
Læsning af en tekstfil void Page_Load(Object Sender ,EventArgs e) { string line; FileStream fs = new FileStream(Server.MapPath("Tekst.fil"), FileMode.Open, FileAccess.Read); StreamReader objReader = new StreamReader(fs); lblMessage.Text = "<pre>"; while ((line = objReader.ReadLine()) != null) lblMessage.Text += line + "<br>"; } lblMessage.Text += "</pre>"; Jens Houmann - Nordjyllands Erhvervsakademi
214
Jens Houmann - Nordjyllands Erhvervsakademi
Streams Import Namespace="System.IO" %> <script language="C#" runat="server"> void Page_Load(Object Sender ,EventArgs e) { string line; FileStream fs = new FileStream(Server.MapPath("Tekst.fil"), FileMode.Open, FileAccess.Read); StreamReader objReader = new StreamReader(fs); lblMessage.Text = "<pre>"; while (objReader.Peek() >-1) line = objReader.ReadLine(); lblMessage.Text += line + "<br>"; } lblMessage.Text += "</pre>"; </script> Jens Houmann - Nordjyllands Erhvervsakademi
215
Jens Houmann - Nordjyllands Erhvervsakademi
Streams Se koden til fillaes1.aspx Og koden til fillaes2.aspx Peek kigger lige om det næste tegn der skal læses er -1, for så er vi færdige. Der kan læses: Tegnvis Linievis Hele filen på en gang Der kan: Konverteres til HTML Tolkes unicode Jens Houmann - Nordjyllands Erhvervsakademi
216
Streams skrivning af en fil
Import Namespace="System.IO" %> <script language="C#" runat="server"> void Page_Load(Object Sender, EventArgs e) { StreamWriter objWriter = new StreamWriter(Server.MapPath("Min.fil"), true); objWriter.WriteLine("Goodmorning Campers"); objWriter.WriteLine("this might be your lucky day!"); objWriter.Write("......and so be it!"); objWriter.Close(); lblMessage.Text = "..og det var det!"; } </script> <html><body> <h1>Skrivning af en tekstfil</h1> <form runat="server"> <asp:label id="lblMessage" runat=server /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
217
Streams skrivning af en fil
Jens Houmann - Nordjyllands Erhvervsakademi
218
Skrivning af en Tekstfil
Import Namespace="System.IO" %> <script language="C#" runat="server"> void Page_Load(Object Sender, EventArgs e) { StreamWriter objWriter = new StreamWriter(Server.MapPath("Min.fil"), true); objWriter.WriteLine("Goodmorning Campers"); objWriter.WriteLine("this might be your lucky day!"); objWriter.Write("......and so be it!"); objWriter.Close(); lblMessage.Text = "..og det var det!"; } </script> <html><body> <h1>Skrivning af en tekstfil</h1> <form runat="server"> <asp:label id="lblMessage" runat=server /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
219
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Programmet: opretlaaner.aspx skal have en tilføjelse. De indtastede data skal gemmes i en tekstfil med navnet: laaner.txt Lav evt. også en knap der kan vise hele tekstfilens indhold. Udskrivningen kan evt. foretages i et andet script: vislaaner.aspx. Der redirectes til dette script. Jens Houmann - Nordjyllands Erhvervsakademi
220
Jens Houmann - Nordjyllands Erhvervsakademi
OpretLaanerMedFil.aspx Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
221
Jens Houmann - Nordjyllands Erhvervsakademi
Redirect Jens Houmann - Nordjyllands Erhvervsakademi
222
Jens Houmann - Nordjyllands Erhvervsakademi
Redirect Page Language="C#" %> <script runat="server"> void Videre(Object src, EventArgs E) { Response.Redirect(" } void Datosiden(Object src, EventArgs E) Response.Redirect("Datotid.aspx"); </script> <hr> <html> <head> <title>Redirect til en anden side</title> <meta http-equiv="Content-Type" content="text/html; charset=iso "> </head> <body> <font size="5">Omdirigering!</font> <p> ******************************************** </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
223
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Opbevaring af data på serveren Kan kun tilgås af dén der har lavet dem. Når browseren lukkes, vil data forsvinde. Genkendes af serveren på Session-ID Jens Houmann - Nordjyllands Erhvervsakademi
224
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Jens Houmann - Nordjyllands Erhvervsakademi
225
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Jens Houmann - Nordjyllands Erhvervsakademi
226
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Page Language="C#" ContentType="text/html" Debug="true" %> <script language="c#" runat="server"> void GemSession(object Sender ,EventArgs E) { Session["Navn"]=tbNavn.Text; Session["Adresse"]=tbAdresse.Text; } void VisSession(object Sender ,EventArgs E) lblNavn.Text= Session["Navn"].ToString(); lblAdresse.Text = Session["Adresse"].ToString(); </script> <html> <head> <title>Brugen af sessionsvariable</title> <LINK REL="Stylesheet" HREF="StyleSheet/styles.css" TYPE="text/css"> </head> <body> <h1>Eksempel på brugen af Sessionsvariable</h1> <form id="minForm" name="fmForm" runat="server"> <p>Indtast dit navn: <asp:TextBox ID="tbNavn" runat="server" MaxLength="25" Size="25"></asp:TextBox> </p><br><br> <p>Indtast din adresse: <asp:TextBox ID="tbAdresse" runat="server" MaxLength="25" Size="25"></asp:TextBox> </p><br><br> <asp:Button ID="btGem" runat="server" Text="Klik her for at gemme" OnClick="GemSession"></asp:Button> <asp:Button ID="btVis" runat="server" Text="Klik her for se indholdet" OnClick="VisSession"></asp:Button> <br> <p>Indholdet af vores sessionsvariable er: </p> <asp:Label runat="server" ID="lblNavn"></asp:Label><br> <asp:Label runat="server" ID="lblAdresse"></asp:Label><br> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
227
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Language="C#" %> <script runat="server"> void Submit_Click(Object src, EventArgs E) { if (tbName.Value !="") Session["Name"]=tbName.Value; Response.Write("Hej med dig " + Session["Name"]+"!"); } else Response.Write("Du glemte at indtaste navn."); </script> <html><body> <form runat="server"> Venligst indtast dit navn: <input type="text" id="tbName" runat="server"/> <p> <asp:Button id="btSubmit" text="Submit" runat="server" OnClick="Submit_Click" /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
228
Jens Houmann - Nordjyllands Erhvervsakademi
Sessionsvariable Page Language="C#" %> <script runat="server"> void Page_Load(object Sender, EventArgs e) { Label1.Text ="Minsanten om det ikke er " + Session["Name"] + "!"; } </script> <html><body> <form runat="server"> <asp:Label id="Label1" runat="server"/> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
229
Buttons med CodeBehind
Page Language="C#" Inherits="AdderPage" ContentType="text/html" ResponseEncoding="Unicode" Src="Adder.aspx.cs" %> <html> <head> <title>Balance</title> </head> <body> <form method="post" Runat="server"> <b>Current balance:</b> <asp:Label ID="total" Text="0" Runat="server"/> Dollars<br><br> <asp:TextBox ID="amount" Runat="server"/> <asp:Button ID="ok" Text="Deposit" OnClick="ButtonClick" Runat="server" /> </form> </body> </html> CodeBehind3.aspx Jens Houmann - Nordjyllands Erhvervsakademi
230
Buttons med CodeBehind
using System; using System.Web.UI; using System.Web.UI.WebControls; public class AdderPage : Page { protected Label total; protected TextBox amount; protected Button ok; public void ButtonClick (object sender, EventArgs e) { int totalVal = Convert.ToInt32(total.Text); int amountVal = Convert.ToInt32(amount.Text); total.Text = (totalVal + amountVal).ToString(); } Adder.aspx.cs Jens Houmann - Nordjyllands Erhvervsakademi
231
Buttons med CodeBehind
Jens Houmann - Nordjyllands Erhvervsakademi
232
Jens Houmann - Nordjyllands Erhvervsakademi
StateBags Anvendes til at gemme data når en form postes. Indhold glemmes så snart siden forlades. Bør kun bruges til temporære data. Page Language="C#" %> <script runat="server"> void Page_Load(object Sender ,EventArgs E) { if (!Page.IsPostBack) ViewState["StartTime"] = DateTime.Now; lblMessage.Text = "Klokken er nu: " + ViewState["StartTime"]; } void Submit(object Sender ,EventArgs E) lblMessage.Text = "Og nu er klokken: " + DateTime.Now +"<br>vi startede: " + ViewState["StartTime"]; </script> <html><body> <font size="5">Et eksempel på brugen af Statebags </font><hr><p> <form runat="server"> <asp:Button id="btSubmit" runat="server" Text="Submit" onClick="Submit" /> <p> <asp:Label id="lblMessage" runat=server /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
233
Jens Houmann - Nordjyllands Erhvervsakademi
StateBags Jens Houmann - Nordjyllands Erhvervsakademi
234
Jens Houmann - Nordjyllands Erhvervsakademi
AutoPostBack Hvis true, så postes data så snart en event er indtruffet. Page Language="C#" %> Import Namespace="System.Drawing" %> <script runat="server"> void NameHandler(object Sender ,EventArgs E) { lblMessage.Text = tbName.Text + ", Vælg en farve: "; } void ListHandler(object Sender ,EventArgs E) lbColor.BackColor = Color.FromName(lbColor.SelectedItem.Text); </script> <html><body> <form runat="server"> <asp:Textbox id="tbName" runat="server" OnTextChanged="NameHandler" AutoPostBack="true" /><p> <asp:Label id="lblMessage" runat="server" Text="Vælg en farve: " /><p> <asp:Listbox id="lbColor" runat="server" OnSelectedIndexChanged="ListHandler" AutoPostBack="true" > <asp:Listitem>Red</asp:Listitem> <asp:Listitem>blue</asp:Listitem> <asp:Listitem>green</asp:Listitem> <asp:Listitem>white</asp:Listitem> </asp:Listbox> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
235
Jens Houmann - Nordjyllands Erhvervsakademi
AutoPostBack Jens Houmann - Nordjyllands Erhvervsakademi
236
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav opgave navngiv. En checkbox med barnets køn. Hvis køn er dreng, sættes en listbox med eks. 5 drengenavne. Når man vælger et drengenavn skal teksten: ”xxxxx er da også et pænt navn!” komme frem på skærmen. Når køn skifter til pige, ja så skal der vises et antal pigenavne. Jens Houmann - Nordjyllands Erhvervsakademi
237
Jens Houmann - Nordjyllands Erhvervsakademi
NavnGiv Se kildekoden her: navngiv.aspx Jens Houmann - Nordjyllands Erhvervsakademi
238
Jens Houmann - Nordjyllands Erhvervsakademi
Navngiv Jens Houmann - Nordjyllands Erhvervsakademi
239
Jens Houmann - Nordjyllands Erhvervsakademi
Kalender - forenklet Page Language="C#" ContentType="text/html" %> <html> <head> <title>Kalender-eksempel</title> </head> <body> <h1>Kalender</h1> <form runat="server"> <asp:Calendar runat="server"></asp:Calendar> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
240
Jens Houmann - Nordjyllands Erhvervsakademi
Kalender - forenklet Jens Houmann - Nordjyllands Erhvervsakademi
241
Jens Houmann - Nordjyllands Erhvervsakademi
Web Server Control Kalender: Jens Houmann - Nordjyllands Erhvervsakademi
242
Web Server Control - kalender
Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
243
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng1.aspx Jens Houmann - Nordjyllands Erhvervsakademi
244
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng1.aspx page language="c#" runat="server"%> <script runat=server> public void page_load() { string strStreng1; strStreng1 = "Søren Sømand og Sally Sørøver på nye Eventyr"; OurLabel.Text = strStreng1 + ", er " + strStreng1.Length + " tegn lang"; } </script> <html> <title>String Længde</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
245
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng2.aspx page language="c#" runat="server"%> <script runat=server> public void page_load(){ string var1,var2,var3; var1 = "ASP.NET is "; var2 = "very cool!"; var3 = var1 + var2; // <<<WAHOO Concatenation OurLabel.Text = var3; } </script> <html> <title>String Concatenation</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
246
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng2.aspx Jens Houmann - Nordjyllands Erhvervsakademi
247
Jens Houmann - Nordjyllands Erhvervsakademi
Strengeksempel 3 page language="c#" runat="server"%> <script runat=server> public void page_load() { String OurString,OurWord,OurFoundWord; OurString = "Det var en mørk og stormfuld nat i Vester Hjermitslev"; OurWord = "nat"; OurFoundWord = OurString.Substring(OurString.IndexOf(OurWord),OurWord.Length); OurLabel.Text = OurFoundWord; } </script> <html> <title>String Substring</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
248
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng4.aspx Jens Houmann - Nordjyllands Erhvervsakademi
249
Jens Houmann - Nordjyllands Erhvervsakademi
Strengeksempel 4 page language="c#" runat="server"%> <script runat=server> public void page_load() { String OurString,MySubStr; OurString = "Søren Sømand og Sally Sørøver var taget på togt"; OurLabel.Text = "Teksten: " + OurString + "<br>"; //Show first 11 characters; MySubStr = OurString.Substring(0,11); OurLabel.Text+= "De første 11 tegn: " + MySubStr + "<br>"; //Show last 4 characters; MySubStr = OurString.Substring(37); OurLabel.Text+= "Fra postition 37: " + MySubStr + "<br>"; //Show 3 character from the middle; MySubStr = OurString.Substring(10,3); OurLabel.Text+= "position 10 og 3 tegn frem: " + MySubStr; } </script> <html> <title>String Substring</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
250
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng5.aspx Jens Houmann - Nordjyllands Erhvervsakademi
251
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng5.aspx page language="c#" runat="server"%> <script runat=server> public void page_load() { String OurString; OurString = "Om søndagen tog Søren Sømand på togt med Sally Sørøver"; OurLabel.Text += "Original Tekst: " + OurString + "<br><br>"; OurLabel.Text += "Med replacement: " + OurString.Replace("togt","druk"); } </script> <html> <title>String - Replace</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
252
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng6.aspx Jens Houmann - Nordjyllands Erhvervsakademi
253
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng6.aspx page language="c#" runat="server"%> <script runat=server> public void page_load(){ String OurString; OurString = "Det Var Den Dag Søren Sømand og Sally Sørøver Tog På Druk!"; OurLabel.Text += "<strong>Original String:</strong>" + OurString + "<br><br>"; OurLabel.Text += "<strong>ToUpper Example:</strong>" + OurString.ToUpper() + "<br><br>"; OurLabel.Text += "<strong>ToLower Example:</strong>" + OurString.ToLower(); } </script> <html> <title>String Upper og Lower</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
254
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng7.aspx page language="c#" runat="server"%> <script runat=server> public void page_load(){ String OurString; OurString = " Det Var Den Dag Søren Sømand og Sally Sørøver Tog På Druk! "; OurLabel.Text = "Original tekst:" + OurString + "<br><br>"; OurLabel.Text += "Original længde:; " + OurString.Length + "<br><br>"; OurString = OurString.Trim(); OurLabel.Text += "Efter trim: " + OurString + "<br><br>"; OurLabel.Text += "Ny længde:" + OurString.Length + "<br><br>"; } </script> <html> <title>String Trim</title> <body> <asp:label id="OurLabel" runat="server"/> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
255
Jens Houmann - Nordjyllands Erhvervsakademi
Strenge streng7.aspx Jens Houmann - Nordjyllands Erhvervsakademi
256
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et program, der kan modtage to strenge: En tekst og et ord eller del af et ord. Programmet skal så bare fortælle hvor i den oprindelige tekst ordet findes. Hvis ikke det findes, skal der gives en fejlmeddelelse. Jens Houmann - Nordjyllands Erhvervsakademi
257
Jens Houmann - Nordjyllands Erhvervsakademi
Strengeksempel Jens Houmann - Nordjyllands Erhvervsakademi
258
Jens Houmann - Nordjyllands Erhvervsakademi
Strengeksempel Se den vejledende løsning her Jens Houmann - Nordjyllands Erhvervsakademi
259
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav et program, der er i stand til at erstatte blanke i en indtastet streng, når man trykker en knap. En anden knap optæller antallet af blanke i den indtastede tekst. Jens Houmann - Nordjyllands Erhvervsakademi
260
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Fjernblanke Se den vejledende løsning her fjernblanke.aspx Jens Houmann - Nordjyllands Erhvervsakademi
261
CodeBehind – mere struktur
Anvendes for at adskille kode fra design Giver mulighed for genbrug af kode. Erklæres med sætningen: Page Language="C#" AutoEventWireup="true" CodeFile=”PgmNavn.aspx.cs" Inherits=”PgmNavn" %> I filen PgmNavn.aspx.cs angives: public partial class PgmNavn : System.Web.UI.Page Jens Houmann - Nordjyllands Erhvervsakademi
262
CodeBehind – mere struktur CodeBehind.aspx
Page Language="C#" AutoEventWireup="true" CodeFile="CodeBehind.aspx.cs" Inherits="CodeBehind" %> <head runat="server"> <title>CodeBehind eksempel</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblOverskrift" runat="server" Font-Bold="True" Font-Size="Large" Style="z-index: 100; left: 112px; position: absolute; top: 24px" Text="CodeBehind Eksempel" Width="200px"></asp:Label> <asp:TextBox ID="tbNavn" runat="server" Style="z-index: 101; left: 232px; position: absolute; top: 144px"></asp:TextBox> <asp:Label ID="lblTekst1" runat="server" Style="z-index: 102; left: 112px; position: absolute; top: 144px" Text="Indtast navn:" Width="104px" Font-Bold="True"></asp:Label> <asp:Button ID="btUdskriv" runat="server" OnClick="Udskriv" Style="z-index: 103; left: 112px; position: absolute; top: 192px" Text="Tryk her!" Width="136px" /> <asp:Label ID="lblDato" runat="server" Style="z-index: 104; left: 112px; position: absolute; top: 64px" Width="224px"></asp:Label> <asp:Label ID="lblUddata" runat="server" Style="z-index: 106; left: 112px; position: absolute; top: 240px" Width="280px"></asp:Label> </div> Jens Houmann - Nordjyllands Erhvervsakademi
263
CodeBehind – mere struktur CodeBehind.aspx.cs
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class CodeBehind : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) lblDato.Text = "Dato: "; lblDato.Text += Convert.ToString(DateTime.Now); } protected void Udskriv(object sender, EventArgs e) lblUddata.Text = "Hej med dig "; lblUddata.Text += tbNavn.Text; Jens Houmann - Nordjyllands Erhvervsakademi
264
Jens Houmann - Nordjyllands Erhvervsakademi
Databind Checkboxlist og databind Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
265
Jens Houmann - Nordjyllands Erhvervsakademi
Data - persistens At kunne: Gemme Finde Ændre Slette Udveksle data er væsentligt for virksomheden Kan gøres med: Filer Databaser Jens Houmann - Nordjyllands Erhvervsakademi
266
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Hvad er en database? Hvor kunne man bruge en database i: En sportsklub Et rejsebureau En fotoforretning Et e-handelsfirma En skole Databaser er lette at håndtere i ASP.NET Jens Houmann - Nordjyllands Erhvervsakademi
267
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Data access-teknologien i .Net er ADO.NET En database er: En samling af data, som er organiseret på en sådan måde, at dens indhold let kan tilgås og blive manipuleret. Et relationelt databasesystem tilbyder software til at gemme, søge og modificere data i databasen. RDBMS indeholder metadata til beskrivelse af organisationen og typen af data. Jens Houmann - Nordjyllands Erhvervsakademi
268
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Centrale begreber: Tabeller Kolonner Records/tuppler Felter/attributter Primærnøgle (unique) Relationer SQL (Structured Query Language) Vigtigt: At undgå redundans – normalisering Jens Houmann - Nordjyllands Erhvervsakademi
269
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Microsoft Access (desktop) MS SQL Server Oracle MySql IBM DB2 Jens Houmann - Nordjyllands Erhvervsakademi
270
Databaser - .Net data providers
Jens Houmann - Nordjyllands Erhvervsakademi
271
Databaser – ADO.Net objecter
Jens Houmann - Nordjyllands Erhvervsakademi
272
Oprettelse af DB i Access
Jens Houmann - Nordjyllands Erhvervsakademi
273
Oprettelse af DB i Access
Jens Houmann - Nordjyllands Erhvervsakademi
274
Oprettelse af DB i Access
Jens Houmann - Nordjyllands Erhvervsakademi
275
Datagrid – den enkle metode
Jens Houmann - Nordjyllands Erhvervsakademi
276
Datagrid – den enkle metode
Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %> <head runat="server"> <title>Vis DataBase</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataGrid runat="Server" ID="DataGrid1"></asp:DataGrid> </div> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
277
Datagrid – den enkle metode
using System; using System.Data; using System.Data.OleDb; //Bemærk denne linie using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; strConnection Source=C:\slet\App_data\navneDB.mdb"; OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = strConnection; OleDbCommand cmd = new OleDbCommand("SELECT * FROM KundeTabel", conn); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); DataGrid1.DataSource = ds; DataGrid1.DataBind(); } Jens Houmann - Nordjyllands Erhvervsakademi
278
Databaseadgang via codebehind
Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <head runat="server"> <title>Læse fra DB</title> </head> <body> <h1>Læse fra en Access database</h1> <form id="form1" runat="server"> <div> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/NavneDB.mdb" SelectCommand="SELECT * FROM [KundeTabel]"></asp:AccessDataSource> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Nr" DataSourceID="AccessDataSource1"> <Columns> <asp:BoundField DataField="Nr" HeaderText="Nr" InsertVisible="False" ReadOnly="True" SortExpression="Nr" /> <asp:BoundField DataField="Navn" HeaderText="Navn" SortExpression="Navn" /> <asp:BoundField DataField="Adresse" HeaderText="Adresse" SortExpression="Adresse" /> <asp:BoundField DataField="PostNr" HeaderText="PostNr" SortExpression="PostNr" /> <asp:BoundField DataField="Byen" HeaderText="Byen" SortExpression="Byen" /> <asp:BoundField DataField="TelefonNr" HeaderText="TelefonNr" SortExpression="TelefonNr" /> <asp:BoundField DataField="AktuelSaldo" HeaderText="AktuelSaldo" SortExpression="AktuelSaldo" /> <asp:BoundField DataField="KoebAarTilDato" HeaderText="KoebAarTilDato" SortExpression="KoebAarTilDato" /> <asp:BoundField DataField="Bemaerk" HeaderText="Bemaerk" SortExpression="Bemaerk" /> </Columns> </asp:GridView> </div> </form> Jens Houmann - Nordjyllands Erhvervsakademi
279
Jens Houmann - Nordjyllands Erhvervsakademi
Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) } Jens Houmann - Nordjyllands Erhvervsakademi
280
Jens Houmann - Nordjyllands Erhvervsakademi
Resultat Jens Houmann - Nordjyllands Erhvervsakademi
281
Jens Houmann - Nordjyllands Erhvervsakademi
DataList Jens Houmann - Nordjyllands Erhvervsakademi
282
Jens Houmann - Nordjyllands Erhvervsakademi
Datalist - kode <form id="form1" runat="server"> <div> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/NavneDB.mdb" SelectCommand="SELECT * FROM [KundeTabel]"></asp:AccessDataSource> </div> <asp:DataList ID="DataList1" runat="server" DataKeyField="Nr" DataSourceID="AccessDataSource1"> <ItemTemplate> Nr: <asp:Label ID="NrLabel" runat="server" Text='<%# Eval("Nr") %>'></asp:Label><br /> Navn: <asp:Label ID="NavnLabel" runat="server" Text='<%# Eval("Navn") %>'></asp:Label><br /> Adresse: <asp:Label ID="AdresseLabel" runat="server" Text='<%# Eval("Adresse") %>'></asp:Label><br /> PostNr: <asp:Label ID="PostNrLabel" runat="server" Text='<%# Eval("PostNr") %>'></asp:Label><br /> Byen: <asp:Label ID="ByenLabel" runat="server" Text='<%# Eval("Byen") %>'></asp:Label><br /> TelefonNr: <asp:Label ID="TelefonNrLabel" runat="server" Text='<%# Eval("TelefonNr") %>'></asp:Label><br /> AktuelSaldo: <asp:Label ID="AktuelSaldoLabel" runat="server" Text='<%# Eval("AktuelSaldo") %>'> </asp:Label><br /> KoebAarTilDato: <asp:Label ID="KoebAarTilDatoLabel" runat="server" Text='<%# Eval("KoebAarTilDato") %>'> Bemaerk: <asp:Label ID="BemaerkLabel" runat="server" Text='<%# Eval("Bemaerk") %>'></asp:Label><br /> <br /> </ItemTemplate> </asp:DataList> Jens Houmann - Nordjyllands Erhvervsakademi
283
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Navnedatabasen findes her: navne.mdb ASP.NET tilbyder en række foruddefinerede udskrifter som er lette at bruge. De fem trin i DB-adgang: Opsæt en DB-connection Åbn’ DB-connection Fyld et datasæt med de ønskede data Opsæt et dataview for at vise data Bind en server control til det pågældende dataview via databinding. Data tilgås ved hjælp af SQL-sproget. Data kan indsættes, ændres, slettes og udvælges via SQL. Jens Houmann - Nordjyllands Erhvervsakademi
284
Jens Houmann - Nordjyllands Erhvervsakademi
Test af connection Import Namespace="System.Data" %> Import Namespace="System.Data.OleDb" %> <script Language="c#" runat="server"> void Page_Load() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; strConnection Source=C:\inetpub\wwwroot\aspnet\data\navne.mdb"; data_src.Text = strConnection; OleDbConnection objConnection = new OleDbConnection(); objConnection.ConnectionString = strConnection; try objConnection.Open(); con_open.Text="Connection opened successfully.<br />"; objConnection.Close(); con_close.Text="Connection closed.<br />"; } catch (Exception e) con_open.Text="Connection failed to open.<br />"; con_close.Text=e.ToString(); </script> Jens Houmann - Nordjyllands Erhvervsakademi
285
Jens Houmann - Nordjyllands Erhvervsakademi
Test af connection Jens Houmann - Nordjyllands Erhvervsakademi
286
Jens Houmann - Nordjyllands Erhvervsakademi
Server.MapPath Vil indsætte aktuel sti foran DB-navne Flytning af programmer til anden placering/anden server kræver ingen ændringer i koden. string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; strConnection Source=" + Server.MapPath("Navne.mdb"); Jens Houmann - Nordjyllands Erhvervsakademi
287
Jens Houmann - Nordjyllands Erhvervsakademi
Opgave Lav ved hjælp af Access en database til brug ved pizza-systemet. Afprøv forbindelsen. Jens Houmann - Nordjyllands Erhvervsakademi
288
SQL – Structured Query Language
Select Delete Insert Update Select fornavn, efternavn from navnetabel where fornavn = ’John’ Select * from pizzatabel Jens Houmann - Nordjyllands Erhvervsakademi
289
Jens Houmann - Nordjyllands Erhvervsakademi
Læsning af data fra DB Jens Houmann - Nordjyllands Erhvervsakademi
290
Jens Houmann - Nordjyllands Erhvervsakademi
Læsning af data fra DB Import Namespace="System.Data" %> Import Namespace="System.Data.OleDb" %> <script Language="c#" runat="server"> void Page_Load() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; strConnection Source=C:\inetpub\wwwroot\aspnet\data\Navne.mdb"; data_src.Text = strConnection; string strSQL = "SELECT Navn, Adresse, Telefon FROM Navnetabel"; string strResultsHolder = ""; OleDbConnection objConnection = new OleDbConnection(strConnection); OleDbCommand objCommand = new OleDbCommand(strSQL, objConnection); OleDbDataReader objDataReader = null; try objConnection.Open(); con_open.Text="Connection opened successfully.<br>"; objDataReader = objCommand.ExecuteReader(); while (objDataReader.Read() == true) strResultsHolder += objDataReader["Navn"]; strResultsHolder += " "; strResultsHolder += objDataReader["Adresse"]; strResultsHolder += "<br/>"; } objDataReader.Close(); objConnection.Close(); con_close.Text = "<br/>Connection closed.<br/>"; divListEmployees.InnerHtml = strResultsHolder; catch (Exception e) con_open.Text = "Connection failed to open successfully.<br/>"; con_close.Text = e.ToString(); </script> Jens Houmann - Nordjyllands Erhvervsakademi
291
Jens Houmann - Nordjyllands Erhvervsakademi
Tilføje Data til DB Jens Houmann - Nordjyllands Erhvervsakademi
292
Jens Houmann - Nordjyllands Erhvervsakademi
Tilføje data til DB Jens Houmann - Nordjyllands Erhvervsakademi
293
Jens Houmann - Nordjyllands Erhvervsakademi
Exceptions En ulovlig handling ”kaster” en exception. Skal programmet være 100% sikkert, skal man søge at ”fange” undtagelsen. try { objConnection.Open(); con_open.Text="Connection opened successfully.<br />"; objConnection.Close(); con_close.Text="Connection closed.<br />"; } catch (Exception ex) con_open.Text="Connection failed to open.<br />"; con_close.Text=ex.ToString(); Jens Houmann - Nordjyllands Erhvervsakademi
294
Jens Houmann - Nordjyllands Erhvervsakademi
At holde øje med fejl! Lav en fil med navnet: web.config med følgende indhold: <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> Placér filen i roden af hjemmekataloget Nu vil serveren vise fejlen og linienummeret. Jens Houmann - Nordjyllands Erhvervsakademi
295
Jens Houmann - Nordjyllands Erhvervsakademi
Debug og fejlfinding Page Language=”C#” Debug=true %> Vil give en detaljeret beskrivelse af eventuel fejl. Husk af fjerne direktivet igen, pga performance. Page Language=”C#” trace = true%> Vil give mulighed for at skrive værdier og flags Trace.Write(”Antal er nu: ”, intAntal) Jens Houmann - Nordjyllands Erhvervsakademi
296
Jens Houmann - Nordjyllands Erhvervsakademi
At programmere Omsætte løsningen af en given problemstilling til en algoritme, som kan beskrives ved hjælp af et givent sprog, som igen kan afvikles på en computer. Et program er en samling instruktioner til løsning af en eller flere opgaver. En proces er et program under afvikling. Jens Houmann - Nordjyllands Erhvervsakademi
297
Jens Houmann - Nordjyllands Erhvervsakademi
En algoritme En beskrivelse af en fremgangsmåde til løsning af et problem hvert skridt er præcist defineret algoritmen slutter efter et endeligt antal skridt. Der kan anvendes sekvens, selektion og iteration Hvad er en god algoritme: korrekt forståelig effektiv. Jens Houmann - Nordjyllands Erhvervsakademi
298
Et programs egenskaber
Ease of use Robustness Flexibility Reliability Portability Ease of Maintenance Jens Houmann - Nordjyllands Erhvervsakademi
299
Jens Houmann - Nordjyllands Erhvervsakademi
Et program En algoritme beskrevet i et programmeringssprog, fx. Java, C#, Javascript. Algoritmen er den generelle løsningsbeskrivelse, programmet er en udmøntning af algoritmen. Jens Houmann - Nordjyllands Erhvervsakademi
300
Oversættere og fortolkere
Oversætter (Compiler) Oversætter til maskinkode en gang for alle, hvorefter programmet kan køres igen og igen. Fortolker (Interpreter) Oversætter og afvikler kildekoden skridt for skridt. Fx en sætning ad gangen. Jens Houmann - Nordjyllands Erhvervsakademi
301
Jens Houmann - Nordjyllands Erhvervsakademi
Syntaks og semantik Jeg må ikke drikke øl, når jeg er til fest. korrekt Jeg må ikke drikke fest, når jeg er til øl. semantisk forkert Jeg må ikke drik øl, når jeg er til fest. syntaktisk forkert Jens Houmann - Nordjyllands Erhvervsakademi
302
Jens Houmann - Nordjyllands Erhvervsakademi
Fejltyper Compile-time fejl: fx syntaksfejl Run-time fejl: fx division med nul Logiske fejl: når programmet producerer forkerte resultater Jens Houmann - Nordjyllands Erhvervsakademi
303
Jens Houmann - Nordjyllands Erhvervsakademi
Udvikling af software Specificér problemet: Formulér problemet så du får en præcis forståelse af, hvad det er for et problem der skal løses Analysér problemet: Identificér de data der skal arbejdes med, samt de resultater der skal fremkomme Design af løsningsalgoritme: Skriv ned skridt for skridt hvordan problemet kan løses. Anvend en top-down tilgang til problemet, dvs. start med at finde de overordnede delproblemer der skal løses, for derefter at gå længere og længere ned i detaljer (trinvis forfinelse) Jens Houmann - Nordjyllands Erhvervsakademi
304
Udvikling af software, fortsat
Implementation af løsningen: Skriv et program der implementerer hvert skridt i algoritmen. Test: Test om programmet kører som det skal Vedligeholdelse: Når programmet kører hos kunden vil der typisk være fejl eller opstå krav om ændring/udvidelser af programmet Jens Houmann - Nordjyllands Erhvervsakademi
305
Objektorienteret programmering
Objektorienteret programmering er et paradigme, der anvender objekter til at designe applikationer og programmer. Udviklet i 1960’erne, men er først slået igennem med ”nyere” programmeringssprog. C++ C# Java Lisp Jens Houmann - Nordjyllands Erhvervsakademi
306
Jens Houmann - Nordjyllands Erhvervsakademi
OOP Object-oriented programming may be seen as a collection of cooperating objects, as opposed to a traditional view in which a program may be seen as a list of instructions to the computer. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent little machine with a distinct role or responsibility Jens Houmann - Nordjyllands Erhvervsakademi
307
OOP – Grundlæggende begreber
Class A class defines the abstract characteristics of a thing (object), including the thing's characteristics (its attributes or properties) and the things it can do (its behaviors or methods or features). For example, the class Dog would consist of traits shared by all dogs, for example breed, fur color, and the ability to bark. Classes provide modularity and structure in an object-oriented computer program. A class should typically be recognizable to a non-programmer familiar with the problem domain, meaning that the characteristics of the class should make sense in context. Jens Houmann - Nordjyllands Erhvervsakademi
308
OOP – grundlæggende begreber
Object A particular instance of a class. The class of Dog defines all possible dogs by listing the characteristics that they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. In programmer jargon, the object Lassie is an instance of the Dog class. The set of values of the attributes of a particular object is called its state. Jens Houmann - Nordjyllands Erhvervsakademi
309
OOP – grundlæggende begreber
Method An object's abilities. Lassie, being a Dog, has the ability to bark. So bark() is one of Lassie's methods. She may have other methods as well, for example sit() or eat(). Within the program, using a method should only affect one particular object; all Dogs can bark, but you need one particular dog to do the barking. Jens Houmann - Nordjyllands Erhvervsakademi
310
OOP – grundlæggende begreber
Inheritance In some cases, a class will have "subclasses," more specialized versions of a class. For example, the class Dog might have sub-classes called Collie, Chihuahua, and GoldenRetriever. In this case, Lassie would be an instance of the Collie subclass. Subclasses inherit attributes and behaviors from their parent classes, and can introduce their own. Suppose the Dog class defines a method called bark() and a property called furColor. Each of its sub-classes (Collie, Chihuahua, and GoldenRetriever) will inherit these members, meaning that the programmer only needs to write the code for them once. Jens Houmann - Nordjyllands Erhvervsakademi
311
OOP – grundlæggende begreber
Abstraction Simplifying complex reality by modeling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem. For example, Lassie the Dog may be treated as a Dog much of the time, a Collie when necessary to access Collie-specific attributes or behaviors, and as an Animal (perhaps the parent class of Dog) when counting Timmy's pets. Jens Houmann - Nordjyllands Erhvervsakademi
312
Jens Houmann - Nordjyllands Erhvervsakademi
OOP - øvelse Lav en klassedefinition med attributter og metoder til følgende: En bil En ansat En vare En bankkonto Jens Houmann - Nordjyllands Erhvervsakademi
313
Jens Houmann - Nordjyllands Erhvervsakademi
OOP – i C# Page Language="C#" ContentType="text/html" %> <script runat="server"> public class PizzaKunde { // Attributter (bemærk små/store bogstaver private string kundeNavn; private int antalPizza; private string kundeTelefon; private string bemaerkning; // Construktor med een parameter public PizzaKunde (int antal) antalPizza =antal; } // Defaultconstructor public PizzaKunde () antalPizza =0; Jens Houmann - Nordjyllands Erhvervsakademi
314
Jens Houmann - Nordjyllands Erhvervsakademi
OOP i C# public string KundeNavn { get return kundeNavn; } set kundeNavn = value; public string KundeTelefon return kundeTelefon; kundeTelefon = value; Jens Houmann - Nordjyllands Erhvervsakademi
315
Jens Houmann - Nordjyllands Erhvervsakademi
OOP i C# public string Bemaerkning { get return bemaerkning; } set bemaerkning = value; public int AntalPizza return antalPizza; public void OptaelPizza (int intAntal) antalPizza = antalPizza + intAntal; Jens Houmann - Nordjyllands Erhvervsakademi
316
Jens Houmann - Nordjyllands Erhvervsakademi
OOP – i C# void Page_Load() { PizzaKunde olsen = new PizzaKunde(0); olsen.KundeNavn = "Jørgen Olsen"; olsen.KundeTelefon = " "; olsen.Bemaerkning = "Køber mange pizzaer"; olsen.OptaelPizza(5); lblUdText.Text += olsen.KundeNavn + "<br>"; lblUdText.Text += olsen.KundeTelefon + "<br>"; lblUdText.Text += olsen.Bemaerkning + "<br>"; lblUdText.Text += Convert.ToString(olsen.AntalPizza) + "<br>"; } Jens Houmann - Nordjyllands Erhvervsakademi
317
Jens Houmann - Nordjyllands Erhvervsakademi
Simpelt login-system Jens Houmann - Nordjyllands Erhvervsakademi
318
Jens Houmann - Nordjyllands Erhvervsakademi
Simpelt login-system //Denne kode indsættes i startsiden (Default.aspx) protected void btLogin_Click(object sender, EventArgs e) { if (tbUserId.Text == "Admin" && tbPassword.Text == "maagodt") Session["Godkendt"] = "OK"; Session["User"] = "Admin"; Response.Redirect("velkomst.aspx"); } else lblFejlMeddelelse.Text = "Fejl i UserId/Password"; Jens Houmann - Nordjyllands Erhvervsakademi
319
Jens Houmann - Nordjyllands Erhvervsakademi
Simpelt login-system //Denne kode indsættes i alle aspx-filer protected void Page_Load(object sender, EventArgs e) { if (Convert.ToString(Session["Godkendt"]) != "OK") Response.Redirect("Default.aspx"); } else lblUserId.Text = Convert.ToString(Session["User"]); Jens Houmann - Nordjyllands Erhvervsakademi
320
Et mere avanceret login-system
Jens Houmann - Nordjyllands Erhvervsakademi
321
Et mere avanceret login-system
Jens Houmann - Nordjyllands Erhvervsakademi
322
Et mere avanceret login-system
protected void btLogin_Click(object sender, EventArgs e) { bool Godkendt = false; string strUser = ""; string strPassword = ""; OleDbConnection MyConnection = new OleDbConnection(); MyConnection.ConnectionString = ConfigurationManager.ConnectionStrings["UserConnection"].ConnectionString; string strSQL = System.Configuration.ConfigurationManager.AppSettings.Get("SQLLaesDB"); OleDbCommand objCommand = new OleDbCommand(strSQL, MyConnection); OleDbDataReader objDataReader = null; try MyConnection.Open(); objDataReader = objCommand.ExecuteReader(); while (objDataReader.Read() == true) strUser = Convert.ToString(objDataReader["UserId"]); strPassword = Convert.ToString(objDataReader["Password"]); if (strUser == tbUserId.Text && strPassword == tbPassword.Text) Godkendt = true; } MyConnection.Close(); objDataReader.Close(); Jens Houmann - Nordjyllands Erhvervsakademi
323
Jens Houmann - Nordjyllands Erhvervsakademi
Tæller Jens Houmann - Nordjyllands Erhvervsakademi
324
Jens Houmann - Nordjyllands Erhvervsakademi
Tæller Page Language="C#" ContentType="text/html" Inherits="CounterPage" Src="CounterPage.cs" %> <html> <head> <title>Velkomstside med tæller</title> <LINK REL="Stylesheet" HREF="StyleSheet/styles.css" TYPE="text/css"> </head> <body> <h1>Velkommen til vores startside med en tæller</h1> <h2>For at se tælleren skal du kigge source-koden!</h2> <p class="usynligt">Du er besøgende nummer <%= CounterValue() %> på denne side!</p> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
325
Jens Houmann - Nordjyllands Erhvervsakademi
Tæller using System.IO; public class CounterPage : System.Web.UI.Page { public int CounterValue() { FileStream s = new FileStream(Server.MapPath("data/Counter.dat"), FileMode.OpenOrCreate); int n = 0; try { BinaryReader r = new BinaryReader(s); n = r.ReadInt32(); } catch {} if (Session["counted"]!= null) { } else n++; Session["counted"]=1; s.Seek(0, SeekOrigin.Begin); BinaryWriter w = new BinaryWriter(s); w.Write(n); s.Close(); return n; Jens Houmann - Nordjyllands Erhvervsakademi
326
Jens Houmann - Nordjyllands Erhvervsakademi
Dato-Tid Jens Houmann - Nordjyllands Erhvervsakademi
327
Jens Houmann - Nordjyllands Erhvervsakademi
Dato-Tid <script runat=server> public void page_load(){ DateTime MinDato = DateTime.Now; OurLabel.Text = "MinDato: " + MinDato + "<BR><BR>"; OurLabel.Text += "<B><U>Date Properties:</U></B><BR>"; OurLabel.Text += "MinDato.Hour: " + MinDato.Hour + "<BR>"; OurLabel.Text += "MinDato.Day: " + MinDato.Day + "<BR>"; OurLabel.Text += "MinDato.DayOfWeek: " + MinDato.DayOfWeek + "<BR>"; OurLabel.Text += "MinDato.DayOfYear: " + MinDato.DayOfYear + "<BR>"; OurLabel.Text += "MinDato.Month: " + MinDato.Month + "<BR>"; OurLabel.Text += "MinDato.Year: " + MinDato.Year + "<BR><BR>"; OurLabel.Text += "<B><U>Date Methods:</U></B><BR>"; OurLabel.Text += "MinDato.ToShortTimeString: " + MinDato.ToShortTimeString() + "<BR>"; OurLabel.Text += "MinDato.ToLongTimeString: " + MinDato.ToLongTimeString() + "<BR>"; OurLabel.Text += "MinDato.ToShortDateString: " + MinDato.ToShortDateString() + "<BR>"; OurLabel.Text += "MinDato.ToLongDateString: " + MinDato.ToLongDateString() + "<BR>"; OurLabel.Text += "MinDato.AddDays(2): " + MinDato.AddDays(2) + "<BR>"; OurLabel.Text += "MinDato.AddMonth(4): " + MinDato.AddMonths(4) + "<BR>"; OurLabel.Text += "MinDato.AddYear(1): " + MinDato.AddYears(1) + "<BR>"; } </script> Jens Houmann - Nordjyllands Erhvervsakademi
328
Jens Houmann - Nordjyllands Erhvervsakademi
Dato-Tid Jens Houmann - Nordjyllands Erhvervsakademi
329
Dato-Tid – Visual Basic
<% Response.Write("Dato: " & now() & "<br>") Response.Write("Dag: " & day(now()) & "<br>") Response.Write("Time: " & hour(now()) & "<br>") Response.Write("Minutter: " & minute(now()) & "<br>") Response.Write("Sekunder: " & second(now()) & "<br>") Response.Write("Måned: " & month(now()) & "<br>") Response.Write("År: " & year(now()) & "<br>") Dim dag as DateTime = DateTime.Now Response.Write("UgeDagsnummer: " & dag.dayofweek & "<br>") Dim ugedage() as string = {"Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"} Response.Write("Ugedag: " & ugedage(dag.dayofweek) & "<br>") Dim elleve as date = #09/11/2001# Dim WD As Long = DateDiff(DateInterval.day, elleve, now()) Response.Write("Antal dage siden 11. september 2001: " & WD & "<BR>") %> Jens Houmann - Nordjyllands Erhvervsakademi
330
Data Rendering Controls
Kan læse XML, Databaser, ArrayLists Data Binding At sætte data i en Rendering Control Først assignes datasource Derefter bindes data (udfyldes) Template Hvorledes udskriften ser ud på skærmen Kun nødvendig at angive hvis default ikke skal anvendes Jens Houmann - Nordjyllands Erhvervsakademi
331
Data Rendering Controls
DataGrid Kan tilføjes dataeditering og linkknapper DataList Kan vise data vha templates Repeater Kan vise en linie for hver datarække Kan ikke selectes eller editeres Jens Houmann - Nordjyllands Erhvervsakademi
332
Datagrid datagrid3.aspx
Import Namespace="System.Data" %> Import Namespace="System.Data.OleDb" %> <script Language="c#" runat="server"> void Page_Load() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;"; strConnection Source=" + Server.MapPath("Navne.mdb"); string strSQL = "SELECT * FROM Navnetabel"; DataSet objDataSet = new DataSet(); OleDbConnection objConnection = new OleDbConnection(strConnection); OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConnection); objAdapter.Fill(objDataSet, "Navnetabel"); DataView objDataView = new DataView(objDataSet.Tables["Navnetabel"]); dgNameList.DataSource=objDataView; dgNameList.DataBind(); } </script> <html> <body> <asp:datagrid id="dgNameList" runat="server" /><br /> </body> Jens Houmann - Nordjyllands Erhvervsakademi
333
Jens Houmann - Nordjyllands Erhvervsakademi
Datagrid Jens Houmann - Nordjyllands Erhvervsakademi
334
Datagrid datagrid.aspx
<body bgcolor="#FFFFFF" text="#000000"> <ASP:DataGrid id="OurDataGrid" BorderWidth="1" BorderColor="#000000" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="12px" HeaderStyle-BackColor="#AAAAAA" ItemStyle-BackColor="#EEEEEE" AutoGenerateColumns="false" runat="server"> <Columns> <asp:BoundColumn HeaderText="Navn" DataField="Navn" /> HeaderText="Telefonnr" DataField="Telefon" /> </Columns> </asp:DataGrid> </body> Jens Houmann - Nordjyllands Erhvervsakademi
335
Jens Houmann - Nordjyllands Erhvervsakademi
Datagrid Jens Houmann - Nordjyllands Erhvervsakademi
336
Datagrid med sortering datagridsort.aspx
Jens Houmann - Nordjyllands Erhvervsakademi
337
Datagrid med sortering datagridsort.aspx
Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
338
DataGrid med delete/select
Jens Houmann - Nordjyllands Erhvervsakademi
339
Jens Houmann - Nordjyllands Erhvervsakademi
DataList Jens Houmann - Nordjyllands Erhvervsakademi
340
Jens Houmann - Nordjyllands Erhvervsakademi
DataList <body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"> <ASP:DataList id="MyDataList" RepeatColumns="3" CellPadding="10" runat="server"> <ItemTemplate> <font face="Verdana, Arial, Helvetica, sans-serif"> <b>Navn: </b><%# DataBinder.Eval(Container.DataItem, "Navn") %><br> <b>Adresse: </b><%# DataBinder.Eval(Container.DataItem, "Adresse") %><br> <b>By: </b><%# DataBinder.Eval(Container.DataItem, "Postnr") %> <%# DataBinder.Eval(Container.DataItem, "Byen") %><br> <b>Telefon: </b><%# DataBinder.Eval(Container.DataItem, "Telefon") %><br><br> </font> </ItemTemplate> </ASP:DataList> Jens Houmann - Nordjyllands Erhvervsakademi
341
Jens Houmann - Nordjyllands Erhvervsakademi
DataList Jens Houmann - Nordjyllands Erhvervsakademi
342
Jens Houmann - Nordjyllands Erhvervsakademi
DataList Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
343
Jens Houmann - Nordjyllands Erhvervsakademi
Repeater Jens Houmann - Nordjyllands Erhvervsakademi
344
Jens Houmann - Nordjyllands Erhvervsakademi
Repeater Se koden her Jens Houmann - Nordjyllands Erhvervsakademi
345
Jens Houmann - Nordjyllands Erhvervsakademi
Repeater Jens Houmann - Nordjyllands Erhvervsakademi
346
Jens Houmann - Nordjyllands Erhvervsakademi
Repeater Se koden her: Jens Houmann - Nordjyllands Erhvervsakademi
347
Jens Houmann - Nordjyllands Erhvervsakademi
Databaser Datasæt er centralt Datasæt er en box med dynamiske egenskaber Datasæt kan fyldes fra en source, eller dannes fra scratch. Datasæt kan klare sig uden database. System.Data namespacet skal inkluderes. Når datasættet er fyldt, skal det bindes. Data i datasæt kan læses, opdateres, dannes eller bruges som style Jens Houmann - Nordjyllands Erhvervsakademi
348
Jens Houmann - Nordjyllands Erhvervsakademi
DataBind Jens Houmann - Nordjyllands Erhvervsakademi
349
Jens Houmann - Nordjyllands Erhvervsakademi
DataBind <script language="CS" runat="server"> void Index_Changed(Object Sender ,EventArgs e) { DataBind(); } </script> <html><body> <form runat="server"> <asp:Listbox runat="server" id="lbColors" width="150" AutoPostBack=true rows="1" SelectionMode="Single" OnSelectedIndexChanged="Index_Changed" > <asp:Listitem value="1" selected>Red</asp:Listitem> <asp:Listitem value=" 2">Blue</asp:Listitem> <asp:Listitem value=" 3">Green</asp:Listitem> <asp:Listitem value=" 4">Yellow</asp:Listitem> </asp:Listbox><p> <asp:Label id="lblMessage" runat="server" Text='<%# lbColors.SelectedItem.Text %>' /> </form> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
350
DataBind – sidste eksempel
Jens Houmann - Nordjyllands Erhvervsakademi
351
Databind – sidste eksempel
Page Language="C#" %> <script language="C#" runat="server"> void Page_Load(Object Sender, EventArgs E) { if (!Page.IsPostBack) { ArrayList values = new ArrayList(); values.Add ("Aab"); values.Add ("Arsenal"); values.Add ("FCK"); values.Add ("AGF"); values.Add ("B52"); values.Add ("Aalborg Freja"); DropDown1.DataSource = values; DropDown1.DataBind(); } void VaelgHold(Object sender, EventArgs e) { Label1.Text = "Du valgte: " + DropDown1.SelectedItem.Text; </script> <html> <head> </head> <body> <h3><font face="Verdana">DataBinding DropDownList</font></h3> <form runat=server> <asp:DropDownList id="DropDown1" runat="server" /> <asp:button Text="Vælg Hold" OnClick="VaelgHold" runat=server/><br> <asp:Label id=Label1 font-name="Verdana" font-size="10pt" runat="server" /> </form> Jens Houmann - Nordjyllands Erhvervsakademi
352
Jens Houmann - Nordjyllands Erhvervsakademi
Pizza-time Jens Houmann - Nordjyllands Erhvervsakademi
353
Jens Houmann - Nordjyllands Erhvervsakademi
DataBind OBS: Husk: if not page.is.postback (side300) Jens Houmann - Nordjyllands Erhvervsakademi
354
Jens Houmann - Nordjyllands Erhvervsakademi
List Controls Indbyggede metoder til at vise, slette og redigere datasæt. 3 typer: Repeater Vis data, indegn predefineret display, layout styres via templates, tilpasningsvenlig. Datalist Mulighed for at ændre, slette data Datagrid Som de to andre, men med mere funktionalitet, sorteringsmulilghed, side x af y, kerne i databehandling. Jens Houmann - Nordjyllands Erhvervsakademi
355
Jens Houmann - Nordjyllands Erhvervsakademi
Datalist Jens Houmann - Nordjyllands Erhvervsakademi
356
Jens Houmann - Nordjyllands Erhvervsakademi
Datalist Se koden her: Jens Houmann - Nordjyllands Erhvervsakademi
357
Jens Houmann - Nordjyllands Erhvervsakademi
Datagrid Jens Houmann - Nordjyllands Erhvervsakademi
358
Jens Houmann - Nordjyllands Erhvervsakademi
Datagrid Se koden her: Jens Houmann - Nordjyllands Erhvervsakademi
359
Jens Houmann - Nordjyllands Erhvervsakademi
ADO.NET Baseres på XML Interaktion uden connection Ingen lås af database XML er 100% tekstbaseret. Husk at datasæt er adskilt fra DB (disconnected) Ændringer i datasæt har ingen betydning for DB Datasæt har properties og metoder Jens Houmann - Nordjyllands Erhvervsakademi
360
Jens Houmann - Nordjyllands Erhvervsakademi
ADO.NET Jens Houmann - Nordjyllands Erhvervsakademi
361
Jens Houmann - Nordjyllands Erhvervsakademi
ADO.NET Page Language="C#" debug = "true"%> Import Namespace="System.Data" %> Import Namespace="System.Data.OleDb" %> <script runat="server"> void Page_Load(Object Sender ,EventArgs e) { OleDbConnection OurConnection; OleDbCommand OurCommand; OleDbDataReader OurDataReader; OurConnection = new oleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/inetpub/wwwroot/iu/navne.mdb"); OurConnection.Open(); OurCommand = new OleDbCommand("Select * From Navnetabel" ,OurConnection); OurDataReader = OurCommand.ExecuteReader(); while (OurDataReader.Read()) Response.Write(OurDataReader.GetInt32(0) + " "); Response.Write(OurDataReader["Navn"] + " " + OurDataReader["Telefon"] + "<br>"); } OurConnection.Close(); </script> <html><body> <h1>Eksempel på udskrivning med ADO-datareader</h1> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
362
Jens Houmann - Nordjyllands Erhvervsakademi
ADO.NET Brug: GetByte GetInt32 GetString GetDate OleDBDataAdapter skal bruges ved opdatering HUSK: at lukke og slukke efter dig! Jens Houmann - Nordjyllands Erhvervsakademi
363
Jens Houmann - Nordjyllands Erhvervsakademi
ADO.NET ADO.NET består af 2 dele: Datasættet Managed providers DS->MP->Storage Storage kan være: OleDB Som kan håndtere alle kendte databaser SQL Som bruger SQL-server 7.0 CLR styrer tabeller, data, streams Jens Houmann - Nordjyllands Erhvervsakademi
364
Repetition af databaseforbindelse
string strSQL; OleDbConnection OurConnection; OleDbCommand OurCommand; OleDbDataReader OurDataReader; strSQL = "Select * From Navnetabel"; OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/inetpub/wwwroot/aspnet/data/navne.mdb"); OurConnection.Open(); OurCommand = new OleDbCommand(strSQL ,OurConnection); OurDataReader = OurCommand.ExecuteReader(); while (OurDataReader.Read()) { lblUddata.Text += OurDataReader["Navn"].ToString() + "<br>"; Jens Houmann - Nordjyllands Erhvervsakademi
365
Jens Houmann - Nordjyllands Erhvervsakademi
Fremfinde data OleDbCommand OurCommand; OleDbDataReader OurDataReader; strSQL = "Select * From Navnetabel where Navn = '" + tbNavn.Text + "'"; Eller: strSQL = "Select * From Navnetabel where Navn like '" + tbNavn.Text + "%'"; strSQL = "Select * From Navnetabel where Navn like ’" + tbNavn.Text + "%'"; Jens Houmann - Nordjyllands Erhvervsakademi
366
Jens Houmann - Nordjyllands Erhvervsakademi
Fremfinde data Jens Houmann - Nordjyllands Erhvervsakademi
367
Jens Houmann - Nordjyllands Erhvervsakademi
Fremfinde data Jens Houmann - Nordjyllands Erhvervsakademi
368
Jens Houmann - Nordjyllands Erhvervsakademi
Fremfinde data if (cbDelNavn.Checked) { strSQL = "Select * From Navnetabel where Navn like '%" + tbNavn.Text + "%'"; } else strSQL = "Select * From Navnetabel where Navn like '" + tbNavn.Text + "%'"; Jens Houmann - Nordjyllands Erhvervsakademi
369
Opdatering af Database
Tilføjelse af poster. Opbyg SQL-string med INSERT INTO… Husk at ASPNET bruger skal have skriveadgang. Husk at placere DB (og filer) i et katalog for sig selv. Jens Houmann - Nordjyllands Erhvervsakademi
370
Indsættelse af nye data i DB
strSQL = "Insert INTO Navnetabel ( Navn, Adresse, Postnr, Byen, Nationalitet, Telefon, Fodselsdag, Bemaerk) Values ('"; strSQL += strNavn + "', '"; strSQL += strAdresse + "','"; strSQL += strPostnr + "','"; strSQL += strBy + "','"; strSQL += strNationalitet + "','"; strSQL += strTelefon + "','"; strSQL += strFødselsdag + "','"; strSQL += strBemærk + "')"; Response.Write(strSQL); OleDbConnection myConnection = new OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=c:\\inetpub\\wwwroot\\aspnet\\Data\\Navne.mdb" ); myConnection.Open(); OleDbCommand myCommand = new OleDbCommand( strSQL, myConnection ); myCommand.ExecuteNonQuery(); myConnection.Close(); Jens Houmann - Nordjyllands Erhvervsakademi
371
Et eksempel på indsættelse
Se programmet indtastnavne.aspx Jens Houmann - Nordjyllands Erhvervsakademi
372
Et eksempel på indsættelse
Jens Houmann - Nordjyllands Erhvervsakademi
373
Hent data fra DB til listbox dropmeddb.aspx
Page Language="C#" %> import Namespace="System.Data" %> import Namespace="System.Data.OleDb" %> <script runat="server"> void Page_Load(Object Sender, EventArgs E) { OleDbConnection objConnection; OleDbCommand objCommand; OleDbDataReader objDataReader; objConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/inetpub/wwwroot/iu/navne.mdb"); objConnection.Open(); objCommand = new OleDbCommand("SELECT * FROM Navnetabel", objConnection); drpData.DataTextField = "Navn"; drpData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); drpData.DataBind(); drpData.Items.Insert(0, "-- Vælg et Navn --"); } </script> <html> <head> </head> <body> <form runat="server"> <asp:DropDownList id="drpData" runat="server"></asp:DropDownList> </form> </body> </html> Jens Houmann - Nordjyllands Erhvervsakademi
374
DropDownMedDataFraDB
Jens Houmann - Nordjyllands Erhvervsakademi
375
DropDown med ekstra visning
Se koden DropDownMedDataFraDB.aspx Jens Houmann - Nordjyllands Erhvervsakademi
376
DropDown Med data fra DB
Jens Houmann - Nordjyllands Erhvervsakademi
377
Jens Houmann - Nordjyllands Erhvervsakademi
Referencer Bøger: J. Richter, "Applied Microsoft .NET Framework Programming" T. Thai and H. Lam, ".NET Framework Essentials" Web sites: Jens Houmann - Nordjyllands Erhvervsakademi
378
Jens Houmann - Nordjyllands Erhvervsakademi
Isolated Storage Svarer til cookies Data gemmes hos clienten i c:\documents and setings\user\local data Kan kun tilgås fra samme script. Jens Houmann - Nordjyllands Erhvervsakademi
379
Isolated Storage – i Visual Basic
Page Language="VB" %> Import Namespace="System.IO" %> Import Namespace="System.IO.IsolatedStorage" %> <script runat="server"> sub Page_Load(Sender as Object, e as EventArgs) dim stream as IsolatedStorageFileStream dim writer as StreamWriter dim data as string = "blue" stream = new IsolatedStorageFileStream("colors.txt", _ FileMode.OpenOrCreate) writer = new StreamWriter(stream) writer.WriteLine(data) writer.Close() end sub </script> <html><body> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
380
Jens Houmann - Nordjyllands Erhvervsakademi
Buffering Jens Houmann - Nordjyllands Erhvervsakademi
381
Jens Houmann - Nordjyllands Erhvervsakademi
Buffering <%Response.Buffer = False %> Skal være første kodelinie inden data er genereret. Jens Houmann - Nordjyllands Erhvervsakademi
382
Jens Houmann - Nordjyllands Erhvervsakademi
Buffering Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object, e as eventargs) dim i as integer Response.Write("Before flush<br>") Response.Flush() for i = 0 to 5000 'just wasting time next Response.Write("After flush, before clear<br>") Response.Clear() Response.Write("After clear, before end<br>") Response.End Response.Write("After end<br>") end sub </script> <html><body> </body></html> Jens Houmann - Nordjyllands Erhvervsakademi
383
Opgave – gæt-hvad-jeg-tænker-på
Lav et program GaetTal.aspx, der kan finde et tilfældigt tal mellem 1 og 500. Du skal så på færrest muligt antal gæt nå frem til tallet. Programmet må svare: Dit gæt er for lavt! Dit gæt er for højt! Hurra, du gættede det på xx forsøg! Jens Houmann - Nordjyllands Erhvervsakademi
384
Søren Sømand siger tak for denne gang
Jens Houmann - Nordjyllands Erhvervsakademi
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.