title: why does checkchanged event does not fire on uncheck of checkbox in asp.net
body: <p>Part of attendance tracker application which displays subjects of user and lets him mark his own attendance.</p>
  
  <p>With enableviewstate="true", the checkbox does not get unchecked and the checkchanged event does not execute.</p>
  
  <pre><code>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 "B.E": sem = 8;
                      break;
                  case "T.E": sem = 6;
                      break;
                  case "S.E": sem = 4;
                      break;
                  case "F.E": sem = 2;
                      break;
                  default: sem = 2;
                      break;
  
              }
  
              int tempmonth = (int)(d1.Month);
              if (tempmonth &gt; 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 &gt; 0)
              {
                  Labelday.Text = dates[0].ToLongDateString() + "&lt;br /&gt;";
                  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
              {
              }
          }
      }
  }
  </code></pre>