/* * Dette er bare en statisk variabel så fagsiden alltid viser et resultat */ protected void Page_Load(object sender, EventArgs e) { /* * Under henter vi ut en string query. Denne inneholder * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke. * Denne blir formatert ved hjelp av formaterQueryString metoden deretter * brukes den i en SQL spørring mot databasen. */ String uformatertQueryString = Request.Url.Query; String formatertQueryString = FormaterQueryString.FormaterString(uformatertQueryString); if (formatertQueryString != "" || formatertQueryString == null) { sidensFagkode = formatertQueryString; } int foreleserId; //Denne trenger vi for å få informasjon om foreleser String query = "SELECT f.*, s.fakultet FROM f*g as f, studier as s WHERE f.fagkode = @SidensFagkode AND f.studieretning = s.studieretning"; var cmd = db.SqlCommand(query); cmd.Parameters.AddWithValue("@SidensFagkode", sidensFagkode); db.OpenConnection(); MySqlDataReader leser = cmd.ExecuteReader(); if (!leser.HasRows) { //Hvis fagkoden ikke inneholder informasjon eller er feil sender serveren deg til default.aspx Server.Transfer("Default.aspx"); } leser.Read(); /* * Her blir databaseresultatet skrevet rett inn i labels, * noen av labels inneholder htmlformatering, dette er for å gjøre de * til linker så man lettere kan navigere siden. * ForeleserId blir castet til int fordi den brukes til en sql * spørring lenger nede */ foreleserId = (int)leser[2]; fagkodeLbl.Text = "Fagkode: " + leser[0].ToString(); fagnavnLbl.Text = "Fagnavn: " + leser[1].ToString(); studieretningLbl.Text = "Studieretning: <a href = 'linjeside.aspx?" + leser[3].ToString() + "'>" + leser[3].ToString() + "</a>"; String forkurs = leser[4].ToString(); fakultetLbl.Text = "Fakultet: <a href = 'fakultet.aspx?" + leser[5].ToString() + "'>" + leser[5].ToString() + "</a>"; //Her sjekkes det om forkurs finnes, og skriver ut et forkurs label hvis det eksisterer if (forkurs != "") { forkursLbl.Text = "Forkurs: <a href = 'fagside.aspx?" + forkurs + "'>" + forkurs + "</a>"; } else { forkursLbl.Text = ""; } leser.Close(); db.CloseConnection(); query = "SELECT fornavn, etternavn FROM foreleser WHERE foreleserid = @ForeleserId"; cmd = db.SqlCommand(query); cmd.Parameters.AddWithValue("@ForeleserId", foreleserId); db.OpenConnection(); leser = cmd.ExecuteReader(); leser.Read(); //Setter sammen fornavn og etternavn fra databasen String foreleserNavn = leser[0].ToString() + " " + leser[1].ToString(); leser.Close(); db.CloseConnection(); foreleserLbl.Text = "Foreleser: <a href = 'foreleserside.aspx?" + foreleserNavn + "'>" + foreleserNavn + "</a>"; /* * Under bruker vi en metode for å kalle på database prosedyrene våre * de blir deretter lagt inn i et int array */ int[] prosedyreSvarSpm1 = ProsedyreKaller("hent_spm1_verdier", sidensFagkode, 1); int[] prosedyreSvarSpm2 = ProsedyreKaller("hent_spm2_verdier", sidensFagkode, 2); int[] prosedyreSvarSpm3 = ProsedyreKaller("hent_spm3_verdier", sidensFagkode, 3); int[] prosedyreSvarSpm4 = ProsedyreKaller("hent_spm4_verdier", sidensFagkode, 4); int[] prosedyreSvarSpm5 = ProsedyreKaller("hent_spm5_verdier", sidensFagkode, 5); /* * Under sjekker vi om et eller flere av spørsmålene ikke har data * de uten data blir deretter skjult fra nettsiden, da de mest sannsynlig * ikke er valide. */ int sumSpm1 = prosedyreSvarSpm1.Sum(); int sumSpm2 = prosedyreSvarSpm2.Sum(); int sumSpm3 = prosedyreSvarSpm3.Sum(); int sumSpm4 = prosedyreSvarSpm4.Sum(); int sumSpm5 = prosedyreSvarSpm5.Sum(); /* * if (sumSpm1 != 0 || sumSpm2 != 0 || sumSpm3 != 0 ) * if Setningen under fungerer på samme måte som denne. * istendenfor at vi sjekker en og en variabel, legger vi * de inn i et anonymt array som og brukes Contains metoden til array * klassen */ if (!new int[] { sumSpm1, sumSpm2, sumSpm3, sumSpm4, sumSpm5 }.Contains(0)) { /* * Her kaller vi på en metode som gir oss gjennomsnittet * til spørsmålene, tallene blir lagt til å spm1RatingLbl. * Og for å få det vist som stjerner blir det lagt inn i * spm1RatingStjerne.Value, men her må vi først bytte ut * komma med punktum. Fordi i noen land bruker de punktum * til å vise tall med desimaler */ String gjennomsnittSpm1 = BeregnGjennomsnittsRating(prosedyreSvarSpm1); String gjennomsnittSpm2 = BeregnGjennomsnittsRating(prosedyreSvarSpm2); String gjennomsnittSpm3 = BeregnGjennomsnittsRating(prosedyreSvarSpm3); String gjennomsnittSpm4 = BeregnGjennomsnittsRating(prosedyreSvarSpm4); String gjennomsnittSpm5 = BeregnGjennomsnittsRating(prosedyreSvarSpm5); spm1RatingLbl.Text = gjennomsnittSpm1; spm2RatingLbl.Text = gjennomsnittSpm2; spm3RatingLbl.Text = gjennomsnittSpm3; spm4RatingLbl.Text = gjennomsnittSpm4; spm5RatingLbl.Text = gjennomsnittSpm5; spm1RatingStjerne.Value = gjennomsnittSpm1.Replace(",", "."); spm2RatingStjerne.Value = gjennomsnittSpm2.Replace(",", "."); spm3RatingStjerne.Value = gjennomsnittSpm3.Replace(",", "."); spm4RatingStjerne.Value = gjennomsnittSpm4.Replace(",", "."); spm5RatingStjerne.Value = gjennomsnittSpm5.Replace(",", "."); //Koden under lager kakediagramet String diagramTittel = "Var faget vanskelig?"; String seriesname = "seriesName"; diagram.Series.Clear(); diagram.Legends.Clear(); diagram.Series.Add(seriesname); diagram.Series[seriesname].ChartType = SeriesChartType.Pie; Title tittel = diagram.Titles.Add(diagramTittel); //Her forandreres skrifttypen til diagramtittelen tittel.Font = new System.Drawing.Font("Verdana", 16, System.Drawing.FontStyle.Bold); diagram.Legends.Add("Legende"); diagram.Legends[0].Alignment = StringAlignment.Center; diagram.Legends[0].BorderColor = Color.Black; /* * #PERCENT{P0} Gjør at man får prosenter på diagramet. * og points vil tilsvarer verdiene. De første parameterne * som går fra 1-5 er for å gi punktene en Id så vi kan sette vår egen * forklaring til dem i Legend. Under vil du se at vi vi setter vår egen * tekst i legende ved å gjøre slik: * diagram.Series[seriesname].Points[0].LegendText = "Svært misfornøyd"; */ diagram.Series[seriesname].Label = "#PERCENT{P0}"; diagram.Series[seriesname].Points.AddXY(0, prosedyreSvarSpm1[1]); diagram.Series[seriesname].Points.AddXY(1, prosedyreSvarSpm1[2]); diagram.Series[seriesname].Points.AddXY(2, prosedyreSvarSpm1[3]); diagram.Series[seriesname].Points.AddXY(3, prosedyreSvarSpm1[4]); diagram.Series[seriesname].Points.AddXY(4, prosedyreSvarSpm1[5]); //Teksten under er den som kommer opp i legend. diagram.Series[seriesname].Points[0].LegendText = "Svært misfornøyd"; diagram.Series[seriesname].Points[1].LegendText = "Litt misfornøyd"; diagram.Series[seriesname].Points[2].LegendText = "Hverken/eller"; diagram.Series[seriesname].Points[3].LegendText = "Litt fornøyd"; diagram.Series[seriesname].Points[4].LegendText = "Meget fornøyd"; } else { /* * Hvis if setningen feiler fordi en av verdiene inneholder 0, * vil det si at det ikke er foretatt en fagvurdering i faget * og siden vil kun vise foreleser, fagkode osv. */ pensumLbl.ForeColor = System.Drawing.Color.Red; pensumLbl.Text = "Det er ikke foretatt en fagvurdering i dette faget. Prøv igjen senere."; //Kodesnutten under trenger vi for å skjule rateit. Uten den vil stjernene vises spm1Div.InnerHtml = ""; spm2Div.InnerHtml = ""; spm3Div.InnerHtml = ""; spm4Div.InnerHtml = ""; spm5Div.InnerHtml = ""; kvalitetLbl.Text = ""; vanskelighetsgradLbl.Text = ""; pensumFormidlingLbl.Text = ""; fagRelevantLbl.Text = ""; } }
protected void Page_Load(object sender, EventArgs e) { //Sjekker om en bruker er logget inn if (Session["studentID"] == null) { Response.Redirect("Default.aspx", true); } /* * Under henter vi ut en string query. Denne inneholder * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke. * Denne blir formatert ved hjelp av formaterQueryString metoden deretter * brukes den i en SQL spørring mot databasen */ String uformatertQueryString = Request.Url.Query; String formatertQueryString = FormaterQueryString.FormaterString(uformatertQueryString); if (formatertQueryString != "" || formatertQueryString == null) { sidensFagkode = formatertQueryString; } else { Response.Redirect("velkomstside.aspx", true); } /* * På denne siden får vi tak i fagkoden til faget som skal vurderes * fra string query. Den blir sendt med nå en student trykker på * knappen for vurdering på MineVurderinger.aspx */ String query = "SELECT spm1, spm2, spm3, spm4, spm5, spm6, spm7, spm8, spm9, spm10 FROM student as s, f*g as f, vurderingsskjema as v WHERE s.studentid = @Studentid AND v.fagkode = @Fagkode AND s.studieretning = f.studieretning AND v.fagkode = f.fagkode"; var cmd = db.SqlCommand(query); cmd.Parameters.AddWithValue("@Studentid", Session["studentID"].ToString()); cmd.Parameters.AddWithValue("@Fagkode", sidensFagkode); db.OpenConnection(); MySqlDataReader leser = cmd.ExecuteReader(); //Arrayet blir satt til 10 siden det kun er 10 spørsmål per vurderingsskjema String[] skjemaSpm = new String[10]; while (leser.Read()) { for (int i = 0; i < 10; i++) { skjemaSpm[i] = leser[i].ToString(); } } db.CloseConnection(); /* * Her bruker vi foreach loop for å fylle på spørsmålsteksten til * labelene på asp.net siden. */ Label[] spmLabel = new Label[10] { spm1Lbl, spm2Lbl, spm3Lbl, spm4Lbl, spm5Lbl, spm6Lbl, spm7Lbl, spm8Lbl, spm9Lbl, spm10Lbl }; int spmIndex = 0; foreach (Label lbl in spmLabel) { lbl.Text = skjemaSpm[spmIndex]; spmIndex++; } }
//Setter en standard foreleserId så det alltid vil vises noe informasjon på nettsiden protected void Page_Load(object sender, EventArgs e) { /* * Under henter vi ut en string query. Denne inneholder * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke. * Denne blir formatert ved hjelp av formaterQueryString-metoden, deretter * brukes den i en SQL-spørring mot databasen. */ String uformatertQueryString = Request.Url.Query; String formatertQueryString = FormaterQueryString.FormaterString(uformatertQueryString); if (formatertQueryString != "" || formatertQueryString == null) { sidensForeleser = formatertQueryString; } //Henter ut navn, fagkode, fagnavn, fakultet, studieretning String query = "SELECT CONCAT(f.fornavn, ' ', f.etternavn) as navn, f*g.fagkode, f*g.fagnavn, f*g.studieretning, s.fakultet from foreleser as f, f*g, studier as s WHERE CONCAT(f.fornavn, ' ', f.etternavn) = @SidensForeleser AND f*g.foreleserid = f.foreleserid AND f*g.studieretning = s.studieretning"; var cmd = db.SqlCommand(query); cmd.Parameters.AddWithValue("@SidensForeleser", sidensForeleser); db.OpenConnection(); String foreleserNavn = null; /* * "using" passer på at objektet som blir definert innenfor * parantesene i blir "destroyed" eller tatt hånd om av * garbage collector så fort krøllparantesene tar slutt. * * Innenfor while løkken legger vi inn informasjonen som er * hentet ut fra databasen i ForeleserInfo objekter som legges * i en liste. */ using (MySqlDataReader leser = cmd.ExecuteReader()) { if (!leser.HasRows) { //Hvis sql feilet/ugyldig parameter til siden blir man sendt til default.aspx Server.Transfer("Default.aspx"); } while (leser.Read()) { foreleserNavn = leser["navn"].ToString(); foreleserInfoListe.Add(new ForeleserInfo() { Fagkode = leser["fagkode"].ToString(), Fagnavn = leser["fagnavn"].ToString(), Fakultet = leser["fakultet"].ToString(), Studieretning = leser["studieretning"].ToString() }); } } db.CloseConnection(); foreleserLbl.Text = "Foreleser: " + foreleserNavn; /* * Her lager vi en tekststreng ved hjelp av string builder-klassen. * Vi legger tekststrengene som ble hentet ut fra databasen og inn i * ForeleserInfo klassen inn i html kode. Hver iterasjon i foreach-løkken tilsvarer * et FakultetInfo-objekt som igjen tilsvarer en rad i SQL spørringen. * Helt til slutt blir hele tekststrengen skrevet ut til HTML, ved hjelp av InnerHtml. * * Html-formateringen under er for å legge dataene inn i en tabell og gjøre de til linker * så man enkelt kan navigere på nettsiden */ StringBuilder sb = new StringBuilder(); foreach (var info in foreleserInfoListe) { sb.Append( "<tr>" + "<td><a href = 'fagside.aspx?" + info.Fagkode + "'>" + info.Fagkode + "</a></td>" + "<td><a href = 'fagside.aspx?" + info.Fagkode + "'>" + info.Fagnavn + "</a></td>" + "<td><a href = 'linjeside.aspx?" + info.Studieretning + "'>" + info.Studieretning + "</a></td>" + "<td>" + info.Fakultet + "</td>" + "</tr>"); } tableBody.InnerHtml = sb.ToString(); }