如何获取在按钮单击事件中动态创建的复选框值

时间:2017-07-28 05:59:40

标签: c# asp.net

我有一个在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;
        }

5 个答案:

答案 0 :(得分: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
       }
   }
}

答案 1 :(得分: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找到控件。

答案 2 :(得分:0)

感谢您的所有意见和答案。

最后我走了,

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

答案 3 :(得分:0)

您也可以在LINQ中执行此操作:

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

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

答案 4 :(得分:0)

如果要工作,你需要在你的案例中添加一个动态添加控件的事件处理程序

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

然后你需要在方法中做什么

private void CheckBox_CheckedChanged(object sender, System.EventArgs e)
{
  ...
}