// ny hest protected void ButtonOpret_Click(object sender, EventArgs e) { // hesten oprettes, erklæres som variabel og instantieres med default constructor Hest hesten = new Hest(); using (var ctx = new RideklubbenContext()) { // værdier puttes ind i objektet hesten.Navn = TextBoxNavn.Text; hesten.Vægt = Convert.ToDouble(TextBoxVægt.Text); hesten.Højde = Convert.ToDouble(TextBoxHøjde.Text); // Åh suk. Jeg har lavet disse felter "not null" i databasen, så der skal være en værdi i. hesten.Forælder_HesteId = ctx.Heste.Single(f => f.Navn == "Stamfar").HesteId; hesten.Fødestald = ""; hesten.FødeDato = DateTime.Now; GemHesteBillede(hesten); // her er magien ctx.Heste.AddObject(hesten); ctx.SaveChanges(); } PanelEdit.Visible = false; ButtonOpret.Visible = false; RepeaterHeste.DataBind(); }
/// <summary> /// Når man klikker på en hest i topbaren /// </summary> /// <param name="source">topbar repeateren</param> /// <param name="e">Alt muligt info om eventet. /// Bl.a. e.CommandArgument, hvor vi har ID'et på hesten brugeren trykkede på.</param> protected void RepeaterTopBar_ItemCommand(object source, RepeaterCommandEventArgs e) { // asert Heste // TODO hvad hvis ikke heste? Men Ryttere eller ejere... // den hest der er klikket på int hesteId = Convert.ToInt32(e.CommandArgument); using (var ctx = new RideklubbenContext()) { // hent den hest der er klikket på Hest hesten = ctx.Heste.Single(heste => heste.HesteId == hesteId); // Udskriv info om hesten (der er kun en, så jeg gider ikke en repeater). CenterImageNavn.Text = hesten.Navn; // udregn alder i år CenterImageAlder.Text = Math.Floor(((DateTime.Now - hesten.FødeDato).TotalDays / 365)).ToString() + " år"; CenterIamgeOprindelse.Text = hesten.Fødestald; CenterImageImg.ImageUrl = hesten.BilledeSti; // HER BLIR DET SMART! // vi binder alle hestens ryttere til repeateren i venstre side. RepeaterLeftColumn.DataSource = hesten.Ryttere; RepeaterLeftColumn.DataBind(); } }
protected void Page_Load(object sender, EventArgs e) { using (var ctx = new RideklubbenContext()) { // hent alle Heste fra context'en, og put dem i repeaterens datasource. // Databind(), så kører resten :-) RepeaterTopBar.DataSource = ctx.Heste; RepeaterTopBar.DataBind(); } }
protected void ButtonOpdater_Click(object sender, EventArgs e) { int hesteID = Convert.ToInt32(ViewState["hesteID"]); Hest hesten; using (var ctx = new RideklubbenContext()) { // vi henter den entitet der skal redigeres hesten = ctx.Heste.Single(h => h.HesteId == hesteID); // nye værdier puttes ind i objektet hesten.Navn = TextBoxNavn.Text; hesten.Vægt = Convert.ToDouble( TextBoxVægt.Text ); hesten.Højde = Convert.ToDouble( TextBoxHøjde.Text ); GemHesteBillede(hesten); // her er magien ctx.SaveChanges(); } PanelEdit.Visible = false; ButtonOpdater.Visible = false; RepeaterHeste.DataBind(); }
protected void RepeaterHeste_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "hentHest") { int hesteID = Convert.ToInt32(e.CommandArgument); Hest hesten; using (var ctx = new RideklubbenContext()) { hesten = ctx.Heste.Single(h => h.HesteId == hesteID); TextBoxNavn.Text = hesten.Navn; TextBoxVægt.Text = hesten.Vægt.ToString(); TextBoxHøjde.Text = hesten.Højde.ToString(); ViewState["hesteID"] = hesteID; } PanelEdit.Visible = true; ButtonOpdater.Visible = true; ButtonOpret.Visible = false; } else if (e.CommandName == "sletHest") { int hesteID = Convert.ToInt32(e.CommandArgument); Hest hesten; using (var ctx = new RideklubbenContext()) { // indlæs entiteten hesten = ctx.Heste.Single(h => h.HesteId == hesteID); try { // slet billedet File.Delete(Server.MapPath("~/" + hesten.BilledeSti)); // slet entiteten ctx.DeleteObject(hesten); // gem ændringerne ctx.SaveChanges(); } catch (System.IO.DirectoryNotFoundException de) { // nada } } RepeaterHeste.DataBind(); } }