繁体   English   中英

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

[英]How to get checked checkbox value which is created dynamically in button click event

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

在按钮的单击事件上,您可以实现以下逻辑。

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

你应该做这个

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的控件。

感谢您的所有评论和答复。

终于我过去了

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

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

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

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

为了使它正常工作,您需要在事件中向动态添加的控件添加事件处理程序

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM