Why the checkchanged event does not fire when unchecked in asp.net

A part of the attendance tracking application that displays the topics of the user and allows him to mark his own attendance.

If enableviewstate = "true", the checkbox is not cleared and the checkaged event is not executed.

namespace portal { public partial class tracker : System.Web.UI.Page { String[] split; string day; protected void Page_Load(object sender, EventArgs e) { /* if (Session["uname"] == null) { Response.Redirect("Firstpage.aspx"); }*/ String[] split = new String[16]; DateTime d1 = DateTime.Today; string month = d1.ToString("MMMM"); Lblmonth.Text = month; String userid = Session["uname"].ToString(); SqlConnection con2 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd2 = new SqlCommand("select sbranch ,syear from studdetails where userid=@userid ", con2); cmd2.Parameters.AddWithValue("userid", userid); String branch = "", year = ""; SqlDataReader rdr2 = null; con2.Open(); rdr2 = cmd2.ExecuteReader(); while (rdr2.Read()) { branch = rdr2["sbranch"].ToString(); year = rdr2["syear"].ToString(); } con2.Close(); int sem = 0; switch (year) { case "BE": sem = 8; break; case "TE": sem = 6; break; case "SE": sem = 4; break; case "FE": sem = 2; break; default: sem = 2; break; } int tempmonth = (int)(d1.Month); if (tempmonth > 6) sem = sem - 1; SqlConnection con3 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd3 = new SqlCommand("select subject from subjecttable where department=@dept and semester=@sem ", con3); cmd3.Parameters.AddWithValue("dept", branch); cmd3.Parameters.AddWithValue("sem", sem); con3.Open(); SqlDataReader rdr3 = null; rdr3 = cmd3.ExecuteReader(); string subject = ""; while (rdr3.Read()) { subject = rdr3["subject"].ToString(); } con3.Close(); Char[] separator = new Char[] { ',' }; String[] subsplit = subject.Split(separator); int size = subsplit.Length; switch (size) { case 6: subj6.Text = subsplit[5]; goto case 5; case 5: subj5.Text = subsplit[4]; goto case 4; case 4: subj4.Text = subsplit[3]; goto case 3; case 3: subj3.Text = subsplit[2]; goto case 2; case 2: subj2.Text = subsplit[1]; goto case 1; case 1: subj1.Text = subsplit[0]; break; ; } } protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { if (e.Day.IsWeekend) { e.Cell.BackColor = System.Drawing.Color.DarkBlue; } else { e.Cell.BackColor = System.Drawing.Color.LightBlue; } SelectedDatesCollection dates = Calendar1.SelectedDates; DateTime toDay = DateTime.Today; string days = toDay.ToLongDateString(); Labelday.Text = days; Char[] separator = new Char[] { ',' }; String[] split1 = days.Split(separator); day = split1[0]; Session["day"] = Calendar1.SelectedDate.ToShortDateString(); if (dates.Count > 0) { Labelday.Text = dates[0].ToLongDateString() + "<br />"; String temp = Labelday.Text; split1 = temp.Split(separator); day = split1[0]; } if (!(day.Equals("Saturday") || day.Equals("Sunday"))) { SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); string cla = Convert.ToString(Session["uclass"]); SqlCommand cmd = new SqlCommand("select " + day + " from studtimetable where class = @class ", con); con.Open(); cmd.Parameters.AddWithValue("class", cla); SqlDataReader rdr = null; String tt = ""; rdr = cmd.ExecuteReader(); while (rdr.Read()) { tt = rdr[day].ToString(); } con.Close(); split = tt.Split(separator); int size = split.Length; lbltime.Visible = true; Lblsubj.Visible = true; Lblatt.Visible = true; switch (size) { case 16: Label15.Text = split[15]; Session["l15"] = Label15.Text; Label14.Text = split[14]; CheckBox8.Visible = true; goto case 14; case 14: Label13.Text = split[13]; Session["l13"] = Label13.Text; Label12.Text = split[12]; CheckBox7.Visible = true; goto case 12; case 12: Label11.Text = split[11]; Session["l11"] = Label11.Text; Label10.Text = split[10]; CheckBox6.Visible = true; goto case 10; case 10: Label9.Text = split[9]; Session["l9"] = Label9.Text; Label8.Text = split[8]; CheckBox5.Visible = true; goto case 8; case 8: Label7.Text = split[7]; Session["l7"] = Label7.Text; Label6.Text = split[6]; CheckBox4.Visible = true; goto case 6; case 6: Label5.Text = split[5]; Session["l5"] = Label5.Text; Label4.Text = split[4]; CheckBox3.Visible = true; goto case 4; case 4: Label3.Text = split[3]; Session["l3"] = Label3.Text; Label2.Text = split[2]; CheckBox2.Visible = true; goto case 2; case 2: Label1.Text = split[1]; Session["l1"] = Label1.Text; Label0.Text = split[0]; CheckBox1.Visible = true; break; } } else { lbltime.Text = "Enjoy weekend"; lbltime.Visible = true; } } protected void Calendar1_SelectionChanged(object sender, EventArgs e) { CheckBox1.Checked = false; CheckBox2.Checked = false; CheckBox3.Checked = false; CheckBox4.Checked = false; CheckBox5.Checked = false; CheckBox6.Checked = false; CheckBox7.Checked = false; CheckBox8.Checked = false; } protected void CheckBox1_CheckedChanged(object sender, EventArgs e) { if (CheckBox1.Checked == true) { string sub = Session["l1"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); } else { Label18.Text = "uncheck";//temporary to check if this block executes } } protected void CheckBox2_CheckedChanged(object sender, EventArgs e) { if (CheckBox2.Checked == true) { string sub = Session["l3"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox3_CheckedChanged(object sender, EventArgs e) { if (CheckBox3.Checked == true) { string sub = Session["l5"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox4_CheckedChanged(object sender, EventArgs e) { if (CheckBox4.Checked == true) { string sub = Session["l7"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox5_CheckedChanged(object sender, EventArgs e) { if (CheckBox5.Checked == true) { string sub = Session["l9"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox6_CheckedChanged(object sender, EventArgs e) { if (CheckBox6.Checked == true) { string sub = Session["l11"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox7_CheckedChanged(object sender, EventArgs e) { if (CheckBox7.Checked == true) { string sub = Session["l13"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } protected void CheckBox8_CheckedChanged(object sender, EventArgs e) { if (CheckBox8.Checked == true) { string sub = Session["l15"].ToString(); string userid = Session["uname"].ToString(); string date = Session["day"].ToString(); string tempclass = Session["uclass"].ToString(); SqlConnection con4 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\mmm\portal\App_Data\student.mdf;Integrated Security=True;User Instance=True"); SqlCommand cmd4 = new SqlCommand("insert into " + tempclass + "track values ('" + userid + "','" + sub + "','" + date + "')", con4); con4.Open(); cmd4.ExecuteNonQuery(); con4.Close(); //Response.Redirect("tracker.aspx"); } else { } } } } 
+5
source share
4 answers

From MSDN ( http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.oncheckedchanged.aspx ):

The CheckBox control must retain some values ​​between publications on the server for this event to work correctly. Verify that view state is enabled for this control.

If the (html) check box is not selected and the form is submitted, no value will be sent back to the server, so you need to enable the ViewState for this control so that ASP.NET monitors the status (checked / unchecked).

+5
source

Remove EnableViewState = "false" and it should work fine

+5
source

Thank you all for your attention. The problem is finally resolved. When the event was disconnected from the user, the checkchanged method was not executed, because 1) it was turned on automatically, disable the called page_load method execution, which, in turn, caused checkbox.visible = false, so the checkchanged didnot was executed, and then the calendar rendering method called checkbox .visible = true with the previous state (viewstate = true), i.e. verified condition.

special thnx to floremin and loren.

+3
source

Solution: you should set-> EnableViewstate = True, ViewStateMode = Enabled, Autopostback = true. all this. it works.

+2
source

All Articles