2017-07-28 52 views
0

我有在page_load事件中動態創建並將其置於面板中的複選框。如何獲取在按鈕單擊事件中動態創建的複選框值

foreach (DataRow dr in column_ds.Rows) 
     { 
      column_checkbox = new CheckBox(); 
      column_checkbox.Text = (string)dr["COLUMN_NAME"]; 
      columnpanel1.Controls.Add(column_checkbox); 
     } 

現在我想在btn_click事件中檢查複選框的值。 有什麼想法? 我想,

columnpanel1.FindControl("column_checkbox"); 

CheckBox cb=(CheckBox)FindControl("column_checkbox"); 
     if (column_checkbox.Checked) { } 
     { 
      string name = column_checkbox.Text; 
     } 
+0

use string name = Convert.ToString(column_checkbox.Checked); – Koderzzzz

+0

面板怎麼樣? – user7415073

回答

0

感謝您的評論和答覆。

最後我得到通過,

foreach (Control cb in columnpanel1.Controls) 
     { 
      if (cb is CheckBox) 
      { 
       CheckBox c = (CheckBox)cb; 
       if (c.Checked) 
       { 
        string s = c.Text; 
       } 
      } 
     } 
0

在點擊按鈕時,您可以實現以下邏輯。

protected void btn_click(object sender, EventArgs e) 
{ 
    foreach(var row in columnpanel1.Rows) 
    { 
     var tempchkBx= row.Controls[0] as CheckBox; 
     if(tempchkBx.IsChecked) 
     { 
     //write your code 
     } 
    } 
} 
0

你應該這樣做

foreach (DataRow dr in column_ds.Rows) 
     { 
      column_checkbox = new CheckBox(); 
      column_checkbox.Text = (string)dr["COLUMN_NAME"]; 
      column_checkbox.ID = (string)dr["ID"] 
      columnpanel1.Controls.Add(column_checkbox); 
     } 

比你可以使用ID找到控制。

0

你也可以做到這一點的LINQ:

var boxes = columnpanel1.Controls.OfType<CheckBox>().Where(c=>c.Checked).ToList(); 

foreach(var chk in boxes) 
     { 
      string s = chk.Text; 
     } 
0

如果對於工作,你需要添加一個事件處理程序中動態添加控件您情況

checkbox = new CheckBox(); 
phChecklist.Controls.Add(checkbox); 
checkbox.CheckedChanged += checkBox_CheckedChanged; 

,然後你需要在方法做什麼

private void CheckBox_CheckedChanged(object sender, System.EventArgs e) 
{ 
    ... 
} 
相關問題