在我的ASP.NET页面中,我定义了一个Div如下:    <div class="content">
       <asp:Literal ID="msg2" runat="server" Text=""></asp:Literal>
    </div>然后再后台代码中,使用   int r=1;//用来标记checkbox
   msg.Text = "<ul>";
   for(int j=1;j<31;j++){
      msg.Text = msg2.Text + "<li style=\"font-weight: bold\" ><input type =\"checkbox\" ID=\"ch" + i.ToString() + "\" runat=\"server\" value=\"ch\""+i.ToString()+"/></li>";
      i++;
   }
   msg2.Text = msg2.Text + "</ul>";来填充Div(注:r用来标记checkbox)
我的问题是:现在我要在用户选择之后,要知道他们选了哪些项,并得到他们对应的value,该怎么办?
很急,希望大家帮忙看看~~~~~~~~

解决方案 »

  1.   

    checkBox有一个参数是Command的,以前看过,忘记了,你查一下这方面的吧!
      

  2.   

    把你的checkbox中的runat="server"去掉吧,没有任何意义
    换成name=\"ch" + i.ToString() + "\"
    然后要获取的时候用Request.Form["ch2"]来获取(里面的2换成你要获取的i)
      

  3.   

    或者把所有的checkbox的name写成一样的,比如name=\"ch\"
    然后在后台用Request.Form["ch"]来获取都选择了哪些项
      

  4.   

    试试        CheckBox chk;
            for (int j = 1; j < 31; j++)
            {
                chk = (CheckBox)this.FindControl("ch" + j.ToString());
                if (chk != null && chk.Checked)
                {
                    //
                }
            }
      

  5.   

    还有一个小问题是:对于那些么有选中的项,他的Request.Form["ch"]是个什么样子呢?
      

  6.   

    是由逗号分隔的字符串,你用Split方法就可以分开了:string str = Request.Form["ch"];
    if(!string.IsNullOrEmpty(str))
    {
        string[] temp = str.Split(',');
        if(Array.IndexOf(temp,"2"))
        {
            //包括value为2的项
        }
    }
      

  7.   

    无法把它从int转为bool值,呵呵,我已经改为:Array.IndexOf(temp,"2")!=-1;
    但是我的问题还是没有解决啊,急死了,我用"ch" + j.ToString()尝试着指定一个checkbox,但还是无效啊!为什么呢?
      

  8.   

    事实上,我测试了一下你的,方法,返回的是空(而事实上,我把所有的checkbox都选上了!)。
    是不是这个填充有一些延迟啊,就是在用后台checkbox代替<asp:Literal ID="msg2" runat="server" Text=""></asp:Literal>
    时,系统并不识别这些checkbox,也就是不存在,然后返回空呢?