关于Panel中哪些动态生成的CheckBox被选中的问题
本帖最后由 cyh027 于 2013-06-11 18:54:26 编辑 由于一些方面的原因需要在Panel中动态加入1,2,3三个CheckBox控件,现在我想在网页提交的时候提交得到如下字符串:
1选定的时候返回1; 2、3选定的时候返回23; 1、2、3选定的时候返回123。
控生成代码段如下:
for(int i=0;i<3;i++)
{
//以复选框的方式来添加
CheckBox cb1 = new CheckBox();
cb1.text=i.toString();
cb1.ID=i.toString();}
panel1.Controls.Add(cb1);
}
protected void bt1_Click(object sender, EventArgs e)
{
foreach (Control C in Panel1.Controls)
{
// if (C.Checked==true)//原计划是在这里判断一下,但是出问题了。
test1.Text = test1.Text + c.ID;//test1为字符串输出控件
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string _ck_val = string.Empty;
CheckBox cb1 = (CheckBox)Page.FindControl("ckbox1");
if (cb1.Checked)
{
_ck_val = _ck_val + "1";
}
CheckBox cb2 = (CheckBox)Page.FindControl("ckbox2");
if (cb2.Checked)
{
_ck_val = _ck_val + "2";
}
CheckBox cb3 = (CheckBox)Page.FindControl("ckbox3");
if (cb3.Checked)
{
_ck_val = _ck_val + "3";
}
Response.Write(_ck_val);
}
}
[解决办法]
改用客户端的控件,设置name一致,提交时会自动拼接以逗号分隔
for (int i = 0; i < 3; i++) {
var control = new System.Web.UI.LiteralControl(string.Format("<input type='checkbox' name='checkbox' value='{0}' />", i));
test.Controls.Add(control);
}
//取值
Request["checkbox"]