protected void CalendarNextDate_SelectionChanged(object sender, EventArgs e) { if (ViewState["RepeaterAbonementId"] == null) { return; } var id = (int)ViewState["RepeaterAbonementId"]; using (var context = new musicstudiodbContext()) { var abon = context.Abonements.First(a => a.Id == id); if (abon == null) { return; } abon.NextDate = calendarNextDate.SelectedDate; context.SaveChanges(); FillAbonementsByClientId(abon.ClientId); calendarNextDate.Visible = false; } //calendarNextDate.SelectedDate //if (calendarNextDate.SelectedDate != DateTime.MinValue) // lblSelected.Text = "The date selected is " + // Calendar1.SelectedDate.ToShortDateString(); //lblCountUpdate(); }
private void BtnSave_Click(object sender, EventArgs e) { using (var context = new musicstudiodbContext()) { try { var abonement = new Abonement(); //abonement.ClientId = client.Id; //abonement.DateEnd = calendarEnd.SelectedDate; //abonement.DateStart = calendarStart.SelectedDate; //abonement.LessonsCount = txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text); //abonement.TeacherId = int.Parse(ddlTeacher.SelectedValue); abonement.ClientId = abonementEditor.ClientId; abonement.DateEnd = abonementEditor.DateEnd; abonement.DateStart = abonementEditor.DateStart; abonement.LessonsCount = abonementEditor.LessonsCount; //txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text); abonement.TeacherId = abonementEditor.TeacherId; context.Abonements.Add(abonement); //client.CarMakeID = int.Parse(ddlMake.SelectedValue); //client.CarYear = int.Parse(txtYear.Text); //client.Model = txtModel.Text; context.SaveChanges(); } catch (DbUpdateException dbex) { Response.Write("<script>alert('Заполните все поля')</script>"); return; } Response.Redirect("MainPage.aspx"); } }
private void BtnSave_Click(object sender, EventArgs e) { using (var context = new musicstudiodbContext()) { var client = context.Clients.First(a => a.Id == clientEditor.ClientId); try { client.Name = clientEditor.FirstName; client.Surname = clientEditor.Surname; client.SecondName = clientEditor.SecondName; client.PhoneNumber = clientEditor.Phone; } catch (EntityDataSourceValidationException tbErr) { Response.Write(tbErr.Message); return; } try { context.SaveChanges(); Response.Redirect("MainPage.aspx"); } catch (DbEntityValidationException ex) { // case of catching errors on saving new data in db String message = ""; #if DEBUG // show full err sequence to devs foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { message += "Object: " + validationError.Entry.Entity.ToString() + "\t"; foreach (DbValidationError err in validationError.ValidationErrors) { message += err.ErrorMessage.ToString() + " "; } } #else // do not show extra info to user message = "Server error occured" #endif Response.Write(message); return; } } }
private bool DeleteClient(int idForDelete, bool delAbonements) { errPanel.Visible = false; buttonDel.Visible = false; try { using (var cont = new musicstudiodbContext()) { if (delAbonements) { cont.Abonements.RemoveRange(from a in cont.Abonements where a.ClientId == idForDelete select a); } var client = (from c in cont.Clients where c.Id == idForDelete select c).First(); cont.Clients.Remove(client); cont.SaveChanges(); } } //если мы не поставили каскадный update конечно catch (DbUpdateException dbex) { var entries = dbex.Entries.ToArray(); if (entries.Length > 0) { //dbexLblMsg.Text = (entries[0] as Teacher).Surname + " не поддается..."; //dbexLblMsg.Text = (entries[0].Entity as Teacher).Surname + " не поддается..."; //нужно юзать reflection (get property name by reflection) var obj = entries[0].Entity; var property = obj.GetType().GetProperty("Surname"); var surname = property.GetValue(obj, null); dbexLblMsg.Text = surname + " не поддается..."; // try add button for delete with abonements // need to save id value. MB by using Session // решениее хорошо тем что id не полетит на клиент и останется в памяти сервера. // и когда мы получим событие нажатия мы из session его достанем // при этом сессия ассоциирована именно с нашем сеансом работы // но у сессии есть и минусы // если мы балансим серверы то может получится так что запрос придет на разгруженный сервер и там не будет нашей сессии // даже если сервер один - сервер подвержен перезагрузкам. Recycle Pool // внутри сервера IIS и внутри IIS - пулы. Как правило один пул на приложение // есть определеный recycle interval после которого производится recycle pool чтобы он не жрал много памяти. и сессии удаляются // также есть timeout и у сессии // есть решение - сохранять сессию в БД // можно избежать работу с сессией и использовать ViewState // это тоже Dictionary как и сессия // ViewState помещает зашифрованную коллекцию в hidden поле на странице // Он не удаляется как сессия и все гарантированно доедет до сервера // Минус viewState в том что hidden разрастается и повышается нагрузка на сеть // В том числе существует form value limit у разных браузеров if (!delAbonements) { buttonDel.Visible = true; ViewState["VictimID"] = idForDelete; } } else { dbexLblMsg.Text = "Ошибка удаления из БД (произошло что-то совсем нехорошее)"; } errPanel.Visible = true; return(false); } return(true); }
private void BtnSave_Click(object sender, EventArgs e) { using (var context = new musicstudiodbContext()) { try { var client = new Client(); try { client.Name = clientEditor.FirstName; client.Surname = clientEditor.Surname; client.SecondName = clientEditor.SecondName; client.PhoneNumber = clientEditor.Phone; } catch (EntityDataSourceValidationException tbErr) { Response.Write(tbErr.Message); return; } try { context.Clients.Add(client); context.SaveChanges(); } catch (DbEntityValidationException ex) { // case of catching errors on saving new data in db String message = ""; #if DEBUG // show full err sequence to devs foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { message += "Object: " + validationError.Entry.Entity.ToString() + "\t"; foreach (DbValidationError err in validationError.ValidationErrors) { message += err.ErrorMessage.ToString() + " "; } } #else // do not show extra info to user message = "Server error occured" #endif Response.Write(message); return; } var abonement = new Abonement(); //abonement.ClientId = client.Id; //abonement.DateEnd = calendarEnd.SelectedDate; //abonement.DateStart = calendarStart.SelectedDate; //abonement.LessonsCount = txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text); //abonement.TeacherId = int.Parse(ddlTeacher.SelectedValue); abonement.ClientId = client.Id; abonement.DateEnd = abonementEditor.DateEnd; abonement.DateStart = abonementEditor.DateStart; abonement.LessonsCount = abonementEditor.LessonsCount; //txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text); abonement.TeacherId = abonementEditor.TeacherId; context.Abonements.Add(abonement); //client.CarMakeID = int.Parse(ddlMake.SelectedValue); //client.CarYear = int.Parse(txtYear.Text); //client.Model = txtModel.Text; context.SaveChanges(); } catch (DbUpdateException dbex) { Response.Write("<script>alert('Заполните все поля')</script>"); return; } Response.Redirect("MainPage.aspx"); } }