Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Programmeringsteknologi

Lignende præsentationer


Præsentationer af emnet: "Programmeringsteknologi"— Præsentationens transcript:

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


Download ppt "Programmeringsteknologi"

Lignende præsentationer


Annoncer fra Google