代码和思路如下:
在页面中有多个checkbox控件.
<input id="chkSys" type="checkbox" runat="server" value="sys_m" />系统管理
<input id="chkLink" type="checkbox" runat="server" value="link_m" />友情链接管理
<input id="chkUser" type="checkbox" runat="server" value="user_m" />友情链接管理
....为了取value值.所以将html控件设置runat="server"..cs代码:
page_load事件中有一权限字段.
string limit="sys_m,link_m";  //对应checkbox的value值
string[] param = limit.Split(',');问题1:如何判断param数组中的值是否与相应的checkbox的value值对应.如果对应.则将其选中.如果不对应,则不选中.
问题2:如果遍历该页面中的所有checkbox控件.并判断其是否选中.如果选中.则将其value值以字符串形式拼接起来并存入数据库
  
PS:不知道思路是否有问题.如果有问题请高手们提出.并加以改进.

解决方案 »

  1.   

    感觉有些麻烦,在页面上加一隐藏域,每选中一checkbox,把value加入隐藏域,最后提交时得到隐藏域值就行了
      

  2.   

    不需要runat="server",js做就可以了
      

  3.   

    这个做起来也挺麻烦的,选中加value,还要用符号隔开,取消选中又要把value和多出来的符号去掉
      

  4.   

    遍历body内的所有控件,筛选出checkbox不就行了吗
      

  5.   

    如果在后台改的话,把这些权限用CheckboxList来控制比较方便,不管是赋值还是取值。
      

  6.   

    问题1:代码如下
    为了方便遍历,我在所有checkbox上加了一个panel控件 
              string t = "sys_m,sys_m";//数据库取出来的字符串
                string[] p = t.Split(',');
                foreach (Control con in this.Panel1.Controls)
                {
                    if (con is HtmlInputCheckBox)
                    {
                        HtmlInputCheckBox c = con as HtmlInputCheckBox;
                        foreach (string s in p)
                        {
                            if (s == c.Value)
                                c.Checked = true;
                        }
                    }
                }问题2:代码
     string v = "";
                foreach (Control con in this.Panel1.Controls)
                {
                    if (con is HtmlInputCheckBox)
                    {
                        HtmlInputCheckBox c = con as HtmlInputCheckBox;
                        if (c.Checked)
                        {
                            v += c.Value + ",";
                        }
                    }
                }
                if (v.Length > 0)
                {
                    v = v.Substring(0, v.Length - 1);
                }
      

  7.   

    用js不安全的。 form1.Controls包涵form里面所以控件。你用for循环遍历所有控件,form1.Controls[1].GetType().Name可以获得该控件类型的名称,如果名称为HtmlInputCheckBox则就是html的checkbox。(需要2层循环,外循环遍历param)
    然后获得该控件的值,如果等于param中的值就把checkbox置为checked
    后边一个问题也可以用这种方法,你揣摩下。
      

  8.   

    js或者是服务器端的都可以,
    你可以用checkboxlist来显示一组checkbox服务器端:
    foreach(ListItem item in checkboxlist1.Items)
    {
        Response.write(item.text);
    response.write(item.value);
    }
      

  9.   

    前台给checkbox加一个相同的name<input id="chkSys" name="ckb" type="checkbox" runat="server" value="sys_m" />系统管理 
    <input id="chkLink" name="ckb" type="checkbox" runat="server" value="link_m" />友情链接管理 
    <input id="chkUser" name="ckb" type="checkbox" runat="server" value="user_m" />友情链接管理 后台:protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
          //直接就可以取到
           string limit = Request.Form["ckb"];//="sys_m,link_m";
        }
    }
      

  10.   

    可以用pagecontrl方法  获取
    自己试试
      

  11.   

    不用runat="server"就行<input id="chkSys" name="ckb" type="checkbox" value="sys_m" />系统管理 
    <input id="chkLink" name="ckb" type="checkbox" value="link_m" />友情链接管理 
    <input id="chkUser" name="ckb" type="checkbox" value="user_m" />友情链接管理 
    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
          //直接就可以取到
           string limit = Request.Form["ckb"];//="sys_m,link_m";
        }
    }
    上面是取得选取中的checkbox值..
    如果是你想按指定的字符串="sys_m,link_m"来选中相应的文本框
    protected void Page_Load(object sender, EventArgs e)
    {
       string limit ="sys_m,link_m";
       Page.ClientScript.RegisterStartupScript(this.GetType(), "selectCheckbox", "SelectCheckBox('"+ limit  +"')", true);
    }function SelectCheckBox(sValue)
    {
         sValue = ","+sValue+",";
         var ckbs = document.getElementsByName("ckb");
         for(i=0;i<ckbs.length;i++) 
         {
              if(sValue.indexOf(","+ckbs[i].value+",")!=-1)
              {
                 ckbs[i].checked = true;
              }
          }
    }
      

  12.   

    这里是.NET
    放着好好的checkboxlist不用。
      

  13.   

    CheckBoxList的SelectedValue到最后只会返回一个值..和咱们想的不一样..你用CheckBoxList到.cs中得遍历。。看哪个Selected是true;比较变态..
      

  14.   

    用checkboxlist只能得到ture或flase.肯定不行的.
    暂用采用了huming_h的方法.
      

  15.   

    resquest.form(id)就可以获得是否选中了
      

  16.   

    string limit="sys_m,link_m";  
    hf.Value=limit
    string[] param = limit.Split(','); 
    hf为HiddenField
    <asp:CheckBoxList ID="ckb"   runat="server" RepeatDirection="Horizontal" RepeatColumns="5">
    </asp:CheckBoxList>
    function check()
    {
     var ckelems = document.getElementById("ckb").getElementsByTagName("input");
     var spelems = document.getElementById("ckb").getElementsByTagName("span");
     var hd=document.getElementById("hf");
     var strhd=hd.value;
     var str=strhd.split(",");
     for(var i=0;i<ckelems.length;i++)
       {
          if(ckelems[i].type=="checkbox")
           {
              if(strhd.indexOf(spelems[i].value1+",")<0)
                 ckelems[i].checked;
            }
      } 
    }
    var arrAll=document.all;
                for(var i=0;i<arrAll.length;i++)
                {
                    if(arrAll[i].type=='checkbox')   
                    { 
                        document.getElementById(arrAll[i].id).checked=true;
                    }
                }
      foreach (Control con in this.Panel1.Controls) 
                { 
                    if (con is HtmlInputCheckBox) 
                    { 
                        HtmlInputCheckBox c = con as HtmlInputCheckBox; 
                        if (c.Checked) 
                        { 
                            str+= c.Value + ","; 
                        } 
                    } 
                } 

    foreach (ListItem lst in ckb.Items)
                {
                    if (lst.Selected)
                        str+= lst.Value + ",";
                }
      

  17.   

    function checkPeriod()
    { var datalist1 = document.getElementById("Datalist1");
    var inputLength1 = datalist1.getElementsByTagName("input").length 
    var radCount = 0;


    for(var i = 0; i < inputLength1; i++)
    {

    var inputControl1 = datalist1.getElementsByTagName("input").item(i);
    if(inputControl1.type == "radio")
    {
    if(inputControl1.checked == true)
    {
    radCount = radCount + 1;
    }
    }

    }

    if(radCount == 0)
    {
    alert("please choose leave applications ");
    return false;
    }

    return true;
    }
      

  18.   

    刚才给你的是datalist中遍历textbox的方法  大致一样 你自己再修改一下
      

  19.   


    你的理解是错误的,给定了id和runat="server", 那么name就和id是一样的。