如何找出动态创建的复选框是否被选中

How to find out whether a dynamically created checkbox was checked or not

我在 ASP.NET 网站的 Page_Load 活动中创建了动态 CheckBox

这是代码

 public CheckBox[] chk;
 chk[i] = new CheckBox();
 chk[i].ID = "chk" + dt1.Rows[i]["SubjectName"].ToString();
 chk[i].Text = dt1.Rows[i]["SubjectName"].ToString();                   
 PanelSubject.Controls.Add(chk[i]);

我以后如何才能知道以这种方式创建的 CheckBox 是否被用户检查过?

您应该为动态创建的复选框注册事件,如下所示:

 public CheckBox[] chk;
 chk[i] = new CheckBox();
 chk[i].ID = "chk" + dt1.Rows[i]["SubjectName"].ToString();
 chk[i].Text = dt1.Rows[i]["SubjectName"].ToString();                   
 chk[i].CheckedChanged += WebForm1_CheckedChanged;
 PanelSubject.Controls.Add(chk[i]);


 void WebForm1_CheckedChanged(object sender, EventArgs e)
 {
      throw new NotImplementedException();
 }

你还需要保持chk[i].AutoPostBack = true;

使用javascript

在您的脚本中:

    var x=document.getElementById("IdCheckbox").checked
if(x==1)
{
//checked
}
else
{
// unchecked
}

function validate() {
        if (document.getElementById('idofcheckbox').checked) {
            alert("checked");
        } else {
            alert("You didn't check it! Let me check it for you.");
        }
    }

或者如果您使用的是 jquery 那么

if($("#idofcheckbox").is(':checked'))
      // checked
else
     // unchecked

另一种方法

$("#idcheckbox").attr("checked") ? alert("Checked") : alert("Unchecked");

由于所有复选框都在一个面板中,并且您已为所有复选框分配了 ID,因此您可以只使用 Findcontrol 方法,该方法按 ID 在面板中查找控件

    string SubjectName = dt1.Rows[i]["SubjectName"].ToString();

    CheckBox currentCheckBox = PanelSubject.FindControl("chk" + SubjectName) as CheckBox;
    if( currentCheckBox !=null   )
    {
         if( currentCheckBox.Checked )
         {
             //here is your code 
             string alertMessage = string.Format("Subject {0} is checked !!!", SubjectName );
         }
     }