我有一个在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 :(得分: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)
{
...
}