首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于Panel中哪些动态生成的CheckBox被选中的有关问题

2013-06-19 
关于Panel中哪些动态生成的CheckBox被选中的问题本帖最后由 cyh027 于 2013-06-11 18:54:26 编辑由于一些

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


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

热点排行