0

私はチェックボックスを動的に作成しようとしています - それらすべてにcheckedChangedイベントが割り当てられています。

イベントハンドラーで、チェックボックスがチェックされているかどうかをテストし、チェックされている場合は、セッションで値属性を痛めつけます。しかし、ここで私にとって大きな問題が発生します。

たとえば、クライアントが 1 つのチェックボックスをオンにすることを決定し、その値属性がセッションに追加されますが、突然そのチェックボックスをオンにしたくないと判断し、チェックを外します。問題ありませんが、この値は保存されたままになります。セッションと私はそれを食べていません。ユーザーがチェックボックスをオフにしたときにこの値を削除する方法はありますか

      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


        }




    }
}
4

1 に答える 1

0

に連結された文字列としてチェックボックスの値を保存しているようですSession["chk"]。そこから何かを削除するのはかなり困難です。に文字列のリストを保存する方が良いのではないかと思いSession["chk"]ますので、そこからエントリを簡単に追加/削除できます...

于 2013-06-19T07:53:08.193 に答える