当用户取消选中此复选框时,删除会话中先前存储的复选框值

时间:2013-06-19 07:35:14

标签: asp.net

我尝试动态创建复选框 - 所有复选框都分配了checkedChanged事件。

在事件处理程序中,我测试是否选中了复选框,如果是,我在会话中输入了value属性。 但这对我来说是个大问题。

例如,客户决定检查一个复选框并将其值属性添加到会话中,但随后他突然决定他不想检查该checbox并取消选中它 - 没关系,但这个值将会留在会话中,我不会那样。 当用户取消选中复选框

时,有没有办法删除此值
      protected void btnProba_Click(objectore  sender, EventArgs e)
        {

           lblProba.Text = ((String)Session["chk"]);

           // lblProba.Text = pr.ToString();
        }


        protected void checkChanged(object sender, EventArgs e)
{
        CheckBox chk = (CheckBox)sender;
        if (chk.Checked)
        {
            //lblProba.Text += chk.Text;
            //myche.Add(chk.Text);
            Session["chk"] += chk.InputAttributes["value"];
        }

}
        protected void ddlNumberTourists_SelectedIndexChanged(object sender, EventArgs e)
        {
            chkddlchange = true;
            int numTourists = Convert.ToInt32(ddlNumberTourists.SelectedItem.Text);
            for (int i = 0; i < numTourists; i++)
            {

                                string connectionString = "Server=localhost\\SQLEXPRESS;Database=excursion;Trusted_Connection=true";
                string query =
          "SELECT Extra_Charge_ID, Excursion_ID, Amout, Extra_Charge_Description FROM EXTRA_CHARGES WHERE Excursion_ID=" + mynewstring;
                SqlConnection conn = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand(query, conn);

                try
                {

                    conn.Open();
                    SqlDataReader rd= cmd.ExecuteReader();
                    int s = 0;


                    while (rd.Read())
                    {   
                        CheckBox mycheckbox = new CheckBox();
                        mycheckbox.ID = "chkblextracharge" + i.ToString() + s.ToString();
                       mycheckbox.Text = rd["Extra_Charge_Description"].ToString();
                       mycheckbox.InputAttributes.Add("value", rd["Extra_Charge_ID"].ToString());

                       mycheckbox.AutoPostBack = true;
                       mycheckbox.CheckedChanged += new EventHandler(checkChanged);
                       Page.FindControl("form1").Controls.Add(mycheckbox);

                                          }



                }//End of try

                catch (Exception ex)
                { }


            }//end of for


        }




    }
}

1 个答案:

答案 0 :(得分:0)

您似乎将复选框值存储为Session["chk"]中的连接字符串。它可以很难从那里删除任何东西。我想在Session["chk"]中存储字符串列表可能会更好,这样您就可以轻松地添加/删除条目......