2017-07-28 24 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

文字列名= 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

を試してみました、あなたは、ロジックの下に実装することができます。あなたがIDを使用してコントロールを見つけることができるよりも

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); 
     } 

を行う必要があります。

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) 
{ 
    ... 
} 
関連する問題