日期:2014-05-17  浏览次数:20468 次

关于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);

}

个人有一思路,就是遍历容器panel1中的所有控件,然后再返回
大至代码如下

    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为字符串输出控件
        }
    }

但问题出现了,我想通过 if (C.Checked==true)来计算哪些控件被选定了,但是发现Control没有Checked这个属性,请问各位高人,这里要怎么写啊?

------解决方案--------------------
把你的Panel换成DataList,然后使用数据绑定方法(设计你的DataList模板)来显示n个CheckBox。

去学学DataList控件的使用吧。
------解决方案--------------------
public partial class test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //if (!Page.IsPostBack) //这里不能使用!Page.IsPostBack
        //{
            CheckBox cb1 = new CheckBox();
            cb1.ID = "ckbox1";
            cb1.Text = "1";
            CheckBox cb2 = new CheckBox();
            cb2.ID = "ckbox2";
            cb2.Text = "2";
            CheckBox cb3 = new CheckBox();
            cb3.ID = "ckbox3";
            cb3.Text = "3";
            Panel1.Controls.Add(cb1);
            Panel1.Controls.Add(cb2);
            Panel1.Controls.Add(cb3