2013-06-19 64 views
0

我嘗試動態創建複選框 - 所有這些複選框都分配了checkedChanged事件。當用戶取消選中此複選框時,刪除以前存儲的會話複選框的值

在事件處理程序我測試是否複選框被選中,如果是的話,我疼痛會話中的值屬性。 但是這對我來說是個大問題。

例如,一個客戶端決定檢查一個複選框,並且它的值屬性被添加到會話中,但是他突然決定他不想檢查該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 


     } 




    } 
} 

回答

0

好像你存儲複選框值作爲Session["chk"]一個連接字符串,刪除此值。它使得很難從中清除任何東西。我想最好在Session["chk"]存儲一個字符串列表,這樣你就可以很容易地從那裏添加/刪除條目...

相關問題