5

考勤跟踪器应用程序的一部分,它显示用户的主题并让他标记自己的考勤。

使用 enableviewstate="true",复选框不会被取消选中,并且 checkchanged 事件不会执行。

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 > 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
            {
            }
        }
    }
}
4

4 回答 4

5

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

CheckBox 控件必须在发送到服务器的帖子之间保留一些值,才能使此事件正常工作。确保为此控件启用了视图状态。

当 (html) 复选框未选中并提交表单时,不会将任何值传递回服务器,这就是您需要为此控件启用 ViewState 的原因,因此 ASP.NET 将跟踪状态(选中/未选中)。

于 2013-04-02T19:33:40.233 回答
4

删除 EnableViewState="false" 它应该可以正常工作

于 2013-04-02T19:34:45.620 回答
2

谢谢大家的考虑。问题终于解决了。在用户取消选中事件时,checkchanged 方法没有执行,因为 1)在自动回发的情况下,取消选中导致 page_load 方法的执行,这反过来导致 checkbox.visible=false,所以 checkchanged 没有执行,然后日历渲染方法导致 checkbox.visible =true 与前一个状态(viewstate=true) 即检查状态。

特别感谢弗洛雷明和罗兰。

于 2013-04-05T11:04:21.010 回答
1

解决方法:你应该设置-> EnableViewstate = True, ViewStateMode = Enabled, Autopostback = true。就这样。这对我有用。

于 2014-05-30T07:31:24.663 回答