2013-11-28 65 views
1
protected void EventDuration_DDL_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     con.Open(); 
     DateTime dt = DateTime.Parse(StartDate_TB.Text); 

     int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); 
     for (int i = 0; i < n; i++) 
     { 

      Label NewLabel = new Label(); 
      NewLabel.ID = "Label" + i; 
      var eventDate = dt.AddDays(i); 
      NewLabel.Text = eventDate.ToLongDateString(); 

      CheckBox newcheck = new CheckBox(); 
      newcheck.ID = "CheckBox" + i; 
      newcheck.AutoPostBack = true; 
      newcheck.CausesValidation = false; 
      newcheck.CheckedChanged += new EventHandler(newcheck_CheckedChanged); 
      this.Labeldiv.Controls.Add(new LiteralControl("<span class='h1size'>")); 
      this.Labeldiv.Controls.Add(NewLabel); 
      this.Labeldiv.Controls.Add(new LiteralControl("</span>")); 
      this.Labeldiv.Controls.Add(new LiteralControl("<div class='make-switch pull-right' data-on='info'>")); 
      this.Labeldiv.Controls.Add(newcheck); 
      this.Labeldiv.Controls.Add(new LiteralControl("</div>")); 
      this.Labeldiv.Controls.Add(new LiteralControl("<br/>")); 
     } 

     con.Close(); 
    } 

    protected void Done_Button_Click(object sender, EventArgs e) 
    { 
     int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); 
     for (int i = 0; i < n; i++) 
     { 
      string labelId = "Label" + i.ToString(); 
      Label NewLabel = (Label)this.Labeldiv.FindControl(labelId); 
      string checkBoxId = "Checkbox" + i.ToString(); 
      CheckBox newcheck = (CheckBox)this.Labeldiv.FindControl(checkBoxId); 

      SqlCommand cmd = new SqlCommand("insert into EventDays(EventDay,EventStatus)values(@EventDay,@EventStatus)", con); 
      cmd.Parameters.AddWithValue("@EventDay", NewLabel.Text); 
      cmd.Parameters.AddWithValue("@EventStatus", newcheck.Checked ? "true" : "false"); 
      cmd.ExecuteNonQuery(); 
     } 
     con.Close(); 
    } 

我在EventDuration_DDL_SelectedIndexChanged創建的標籤&複選框動態......動態創建的複選框的選中變化事件,不會觸發

我要存儲這些檢查後,該複選框....

但CheckedChange事件未被觸發......... ??????

+0

可能重複[創建動態的CheckBoxList並插入到數據庫(http://stackoverflow.com/questions/19976836/create-checkboxlist-dynamic-and-into-into-database) –

回答

0
newcheck .AutoPostBack = true; 
    newcheck .CheckedChanged += new EventHandler(CheckBox_CheckedChanged); 

這是添加事件處理程序

改變這一行代碼的方式:

newcheck.CheckedChanged += newcheck_CheckedChanged; 
+0

@ THOR它正在爲你工作,對嗎? –

+0

不,它不工作........... – THOR

+0

添加原因validation = false或在if(!IsPostback)中創建頁面加載控件 –

0

中的SelectedIndexChanged添加複選框不可尤其是當你需要綁定的服務器事件的好方法。因爲這些在頁面的「LoadViewState」時不可用。

最好的辦法是,

添加的複選框中的aspx頁面&標籤本身然後設置Visible="false"和綁定所需的事件。

然後,你可以通過設置newCheck.Visible = true

通過這樣的事件只是改變其在SelectedIndexCHange的事件可見將火

+0

你能給我任何代碼? – THOR

+0

如果DDL有100個選項,那麼它對程序員來說就非常困難..,這就是爲什麼我喜歡動態創建.... – THOR

+0

然後你可以使用CheckBoxList控件 http://msdn.microsoft.com/en-us /library/System.Web.UI.WebControls.CheckBoxList(v=vs.110).aspx SelectIndexChange創建包含所需數據綁定的列表。然後將其作爲DataSource綁定到CheckBoxList控件。 – Bharath

相關問題