前台页面代码:<asp:Repeater ID="r_modelList" runat="server">
                    <HeaderTemplate>
                        <table width="100%" border="0" cellpadding="0" cellspacing="0">
                            <tr class="tabHeader">
                                <td>&nbsp;</td>
                                <td>
                                    <input type="checkbox" id="cb_selectAll" onclick="modelNameAllcheck()" />
                                    模块名称
                                </td>
                                <td>
                                    查看
                                    <select id="cb_viewType"  onchange="viewTypeChange('cb_viewType','viewType')">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                                </td>
                                <td>
                                    <input type="checkbox" id="cb_Add_tile" onclick="addAll()" />
                                    添加
                                </td>
                                <td>
                                    修改 <select id="cb_edit" onchange="viewTypeChange('cb_edit','editType')">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                                </td>
                                <td>
                                    删除 <select id="cb_del" onchange="viewTypeChange('cb_del','delType')">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                                </td>
                                <td>
                                    上报 <select id="cb_sb" onchange="viewTypeChange('cb_sb','sbType')">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                                </td>
                            </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr>
                        <td>
                        <input type="hidden" name="hf_ModuleID" value=<%#Eval("ModuleID") %> />
                        </td>
                            <td>
                                <input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />
                                <%#Eval("ModuleName")%>
                            </td>
                            <td>
                                <select name="viewType">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                            </td>
                            <td>
                                <input type="checkbox" id="addName" name="cb_addName" />
                            </td>
                            <td>
                               <select name="editType">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                            </td>
                            <td>
                                 <select name="delType">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                            </td>
                            <td>
                                 <select name="sbType">
                                    <option value="0">无</option>
                                    <option value="1">自己</option>
                                    <option value="2">岗位</option>
                                    <option value="3">单位</option>
                                    <option value="4">所有</option>
                                </select>
                            </td>
                        </tr>
                    </ItemTemplate>
                    <FooterTemplate>
                        </table>
                    </FooterTemplate>
                </asp:Repeater>
后台代码: /// <summary>
        /// 提交数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btn_submit_Click(object sender, EventArgs e)
        {
            //r_modelList.Items
            List<Flat_ModuleInRole> al = new List<Flat_ModuleInRole>();
            string[] cb_modelName = Request.Params.GetValues("cb_modelName");            string[] cb_viewType = Request.Params.GetValues("viewType");            foreach(RepeaterItem ri in r_modelList.Items)
            {
               // ri.Controls[3] 
                CheckBox cb_ModelName_check = ri.FindControl("cb_modelName") as CheckBox;
                if (cb_ModelName_check!=null&&cb_ModelName_check.Checked)
                {
                    Flat_ModuleInRole mir = new Flat_ModuleInRole();
                    HiddenField hfId = ri.FindControl("hf_ModuleID") as HiddenField;
                    mir.ModuleID = hfId.Value;
                    DropDownList ddl_viewType = ri.FindControl("cb_viewType") as DropDownList;
                    mir.CanSelect =Int32.Parse( ddl_viewType.SelectedValue);
                    CheckBox cb_add = ri.FindControl("cb_addName") as CheckBox;
                    if (cb_add.Checked)
                    {
                        mir.CanInsert = 1;
                    }
                    else
                    {
                        mir.CanInsert = 0;
                    }                    DropDownList ddl_edit = ri.FindControl("editType") as DropDownList;
                    mir.CanUpdate = Int32.Parse(ddl_edit.SelectedValue);                    DropDownList ddl_del = ri.FindControl("delType") as DropDownList;
                    mir.CanDelete = Int32.Parse(ddl_del.SelectedValue);                    DropDownList ddl_up = ri.FindControl("sbType") as DropDownList;
                    mir.CanUp = Int32.Parse(ddl_up.SelectedValue);                    switch(hf_Flag.Value)
                    {
                        case "1":
                            mir.URM=1;
                            mir.RoleId = Int32.Parse(hf_id.Value);
                            break;
                        case "2":
                            mir.URM=2;
                            mir.UserID =Int32.Parse( hf_id.Value);
                            break;
                    }                    al.Add(mir);
                }            }
            ModelInRoleDAL mird = new ModelInRoleDAL();
            int result = mird.update(al);
            if (result > 0)
            {
                //添加成功
            }
            else
            {
                //添加失败
            }
        }
现在想通过后台读取用户选择的Select中的value,还有CheckBox中的值如何实现呢?
刚开始 ,用服务器控件实现,但是涉及到全选、DropDownList选择后前台页面中的<input type=checkbox name="cb_modelName" value=<%#Eval("ModuleID") %> />也必须选中,而且Asp.net的服务器控件输出到页面的时候Name会改变,不得已前台又换回了Html控件,使用JS控制前台页面

解决方案 »

  1.   


     <script type="text/javascript">
            //模块名是否选中
            function check(flag) {
                var e = form1.elements;
                    for (var i = 0; i < e.length; i++) {
                        if (e[i].name == "cb_modelName") {
                            e[i].checked = flag;
                        }
                    }
            }
            function modelNameAllcheck() {
                var e = form1.elements;
                if (document.getElementById("cb_selectAll").checked)//全选处于checked
                {
                    for (var i = 0; i < e.length; i++) {
                        if (e[i].name == "cb_modelName") {
                            e[i].checked = true;
                        }
                    }
                }
                else//全选处于非checked
                {
                    for (var i = 0; i < e.length; i++) {
                        if (e[i].name == "cb_modelName") {
                            e[i].checked = false;
                        }
                    }
                }
            }
            //添加全部选中
            function addAll() {
                var e = form1.elements;
                if (document.getElementById("cb_Add_tile").checked)//全选处于checked
                {
                    for (var i = 0; i < e.length; i++) {
                        if (e[i].name == "cb_addName") {
                            e[i].checked = true;
                        }
                    }
                }
                else//全选处于非checked
                {
                    for (var i = 0; i < e.length; i++) {
                        if (e[i].name == "cb_addName") {
                            e[i].checked = false;
                        }
                    }
                }
            }        function selectChange(onName,conName) {
                var e = form1.elements;
                var viewType = document.getElementById(onName).value;
                for (var i = 0; i < e.length; i++) {
                    if (e[i].name == conName) {
                        for (var no = 0; no < e[i].options.length; no++) {
                            if (e[i].options[no].value == viewType) {
                                e[i].options[no].selected = true;
                            }
                        }
                    }
                }
            }
            
            //查看
            function viewTypeChange(onName, conName) {            selectChange(onName, conName);            //如果是修改,则把查看改成同级别
                if (onName == "cb_viewType") {
                    var edit = document.getElementById("cb_viewType").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                }
                else if (onName == "cb_edit") {
                    var edit = document.getElementById("cb_edit").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                    
                }
                else if (onName == "cb_del") {
                    var edit = document.getElementById("cb_del").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                }
                else if (onName == "cb_sb") {
                    var edit = document.getElementById("cb_sb").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                }
                
            }
            
            
        </script>
      

  2.   

    弄个隐藏域,然后为select编写onchange事件,每次触发时,用js将选中的值赋给隐藏域,这样后台就可以获取得到了
      

  3.   


    1.现在想通过后台读取用户选择的Select中的value,还有CheckBox中的值如何实现呢?答:根据控件的name属性。后台用request.params["控件name"]可以得到。
      

  4.   


    我用这个方法了。
    string[] cb_modelName = Request.Params.GetValues("cb_modelName");string[] cb_viewType = Request.Params.GetValues("viewType");问题是 还有个选了,比如说选择了这个模块,后面的权限才可以获取,而这样的话,他会获取所有的值,易混乱
      

  5.   

    string[] cb_modelName = Request.Params.GetValues("cb_modelName");string[] cb_viewType = Request.Params.GetValues("viewType");会获取所有的值如果这个模块没选,后面的控件值就不要了
      

  6.   

    在Repeater里有一个Checkbox就可以了,这样绑定的时候每行都会有复选框,然后用JS控制全选/取消
     <asp:Repeater runat="server" ID="rpFunList">
         <ItemTemplate>
             <tr>
              <td>
                  <asp:CheckBox ID="CheckBox1" runat="server" />
                     <asp:Label ID="Id" runat="server" Text='<%#Eval("ID")%>' Visible="false"></asp:Label></td>
              <td><%#Eval("字段名")%>&nbsp;</td>
              <td><%#Eval("字段名")%>&nbsp;</td>
              <td><%#Eval("字段名")%>&nbsp;</td>
             </tr>
       </ItemTemplate>
    </asp:Repeater>
    js判断是否全选
    function chkAll_true()
    {
        var chkall= document.all["chkAll"];
        var chkother= document.getElementsByTagName("input");
        for (var i=0;i<chkother.length;i++)
        {
    if( chkother[i].type=='checkbox')
    {
    if(chkother[i].id.indexOf('CheckBox1')>-1)
    {
    if(chkall.checked==true)
    {
    chkother[i].checked=true;
    }
    else
    {
    chkother[i].checked=false;
    }
    }
    }
        }
    }
    后台取值:
    for (int i = 0; i < this.Repeater1.Items.Count; i++)
    {
          CheckBox cbox = (CheckBox)Repeater1.Items[i].FindControl("CheckBox1");
          Label lbId = (Label)Repeater1.Items[i].FindControl("Id");
          if (cbox.Checked == true)
           {
              //获取ID
               int id = int.Parse(Id.Text.ToString());
               //执行你要的操作
           }
    }
      

  7.   

    foreach(RepeaterItem ri in r_modelList.Items)
    {
    HtmlSelect s= ri.FindControl("Select1") as HtmlSelect; 
     }
      

  8.   

    谢谢各位的解答,但是后台无法获取前台的Html控件,不知道是本人水平问题还是Asp.net的问题?我贴出我的解决方案(请大家参考一下):前台页面(Html控件都加了runat="server",通过JS解决控件名实现全选、Select联动)<div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Repeater ID="r_modelList" runat="server">
                        <HeaderTemplate>
                            <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                <tr class="tabHeader">
                                    <td>&nbsp;</td>
                                    <td>
                                        <input type="checkbox" id="cb_selectAll" onclick="modelNameAllcheck()" />
                                        模块名称
                                    </td>
                                    <td>
                                        查看
                                        <select id="cb_viewType"  onchange="viewTypeChange('cb_viewType','viewType')">
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                    </td>
                                    <td>
                                        <input type="checkbox" id="cb_Add_tile" onclick="addAll()" />
                                        添加
                                    </td>
                                    <td>
                                        修改 <select id="cb_edit" onchange="viewTypeChange('cb_edit','editType')">
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                    </td>
                                    <td>
                                        删除 <select id="cb_del" onchange="viewTypeChange('cb_del','delType')">
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                    </td>
                                    <td>
                                        上报 <select id="cb_sb" onchange="viewTypeChange('cb_sb','sbType')">
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                    </td>
                                </tr>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <tr>
                            <td>
                            <input type="hidden" id="hf_ModuleID" name="hf_ModuleID" value=<%#Eval("ModuleID") %>  runat=server />
                            </td>
                                <td>
                                    <input type="checkbox" id="cb_modelName" name="cb_modelName"  value=<%#Eval("ModuleID") %> runat=server />
                                    <%#Eval("ModuleName")%>
                                </td>
                                <td>
                                    <select id="viewType" name="viewType" runat=server>
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                </td>
                                <td>
                                    <input type="checkbox" id="addName" name="cb_addName" runat=server />
                                </td>
                                <td>
                                   <select id="editType" name="editType" runat=server>
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                </td>
                                <td>
                                     <select id="delType" name="delType" runat=server>
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                    
                                </td>
                                <td>
                                     <select id="sbType" name="sbType" runat=server>
                                        <option value="0">无</option>
                                        <option value="1">自己</option>
                                        <option value="2">岗位</option>
                                        <option value="3">单位</option>
                                        <option value="4">所有</option>
                                    </select>
                                </td>
                            </tr>
                        </ItemTemplate>
                        <FooterTemplate>
                            </table>
                        </FooterTemplate>
                    </asp:Repeater>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    后台代码:
     /// <summary>
            /// 提交数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void btn_submit_Click(object sender, EventArgs e)
            {
                //r_modelList.Items
                List<Flat_ModuleInRole> al = new List<Flat_ModuleInRole>();            foreach(RepeaterItem ri in r_modelList.Items)
                {
                   // ri.Controls[3] 
                    HtmlInputCheckBox cb_ModelName_check = (HtmlInputCheckBox)ri.FindControl("cb_modelName");
                    //CheckBox cb_ModelName_check = ri.FindControl("cb_modelName") as CheckBox;
                    if (cb_ModelName_check!=null&&cb_ModelName_check.Checked)
                    {
                        Flat_ModuleInRole mir = new Flat_ModuleInRole();
                        HtmlInputHidden hfId = ri.FindControl("hf_ModuleID") as HtmlInputHidden;
                        mir.ModuleID = hfId.Value;
                        HtmlSelect ddl_viewType = ri.FindControl("viewType") as HtmlSelect;
                        mir.CanSelect =Int32.Parse( ddl_viewType.Value);
                        HtmlInputCheckBox cb_add = ri.FindControl("addName") as HtmlInputCheckBox;
                        if (cb_add.Checked)
                        {
                            mir.CanInsert = 1;
                        }
                        else
                        {
                            mir.CanInsert = 0;
                        }                    HtmlSelect ddl_edit = ri.FindControl("editType") as HtmlSelect;
                        mir.CanUpdate = Int32.Parse(ddl_edit.Value);                    HtmlSelect ddl_del = ri.FindControl("delType") as HtmlSelect;
                        mir.CanDelete = Int32.Parse(ddl_del.Value);                    HtmlSelect ddl_up = ri.FindControl("sbType") as HtmlSelect;
                        mir.CanUp = Int32.Parse(ddl_up.Value);                    switch(hf_Flag.Value)
                        {
                            case "1":
                                mir.URM=1;
                                mir.RoleId = Int32.Parse(hf_id.Value);
                                break;
                            case "2":
                                mir.URM=2;
                                mir.UserID =Int32.Parse( hf_id.Value);
                                break;
                        }                    al.Add(mir);
                    }            }
                ModelInRoleDAL mird = new ModelInRoleDAL();
                int result = mird.update(al);
                if (result > 0)
                {
                    //添加成功
                    Response.Write("<script>alert('修改成功!');history.go(-1);</script>");
                }
                else
                {
                    //添加失败
                    Response.Write("<script>alert('修改失败!');</script>");
                }
            }
      

  9.   

    JS部分,通过JS截取获取页面控件名        //模块名是否选中
            function check(flag) {
                var e = form1.elements;
                    for (var i = 0; i < e.length; i++) {
    var ctrName = e[i].name;
    var con = ctrName.substring(ctrName.lastIndexOf("$")+1, ctrName.length)
    if (con == "cb_modelName") {
                            e[i].checked = flag;
                        }
                    }
            }
            function modelNameAllcheck() {
                var e = form1.elements;
                if (document.getElementById("cb_selectAll").checked)//全选处于checked
                {
                    for (var i = 0; i < e.length; i++) {
                        var ctrName = e[i].name;
                        var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
                        if (con == "cb_modelName") {
                            e[i].checked = true;
                        }
                    }
                }
                else//全选处于非checked
                {
                    for (var i = 0; i < e.length; i++) {
                        var ctrName = e[i].name;                    var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
                        if (con == "cb_modelName") {
                          
                            e[i].checked = false;
                        }
                    }
                }
            }
            //添加全部选中
            function addAll() {
                var e = form1.elements;
                if (document.getElementById("cb_Add_tile").checked)//全选处于checked
                {
                    for (var i = 0; i < e.length; i++) {
                         var ctrName = e[i].name;
                         var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
                        if (con == "addName") {
                            e[i].checked = true;
                        }
                    }
                }
                else//全选处于非checked
                {
                    for (var i = 0; i < e.length; i++) {
                        var ctrName = e[i].name;
                        var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
                        if (con == "addName") {
                            e[i].checked = false;
                        }
                    }
                }
            }        function selectChange(onName,conName) {
                var e = form1.elements;
                var viewType = document.getElementById(onName).value;
                for (var i = 0; i < e.length; i++) {
                    var ctrName = e[i].name;
                    var con = ctrName.substring(ctrName.lastIndexOf("$") + 1, ctrName.length);
                    //alert("ctrName = "+ctrName + " | con = "+con+ " | conName = "+conName);
                    if (con == conName) {
                        for (var no = 0; no < e[i].options.length; no++) {
                            if (e[i].options[no].value == viewType) {
                                e[i].options[no].selected = true;
                            }
                        }
                    }
                }
            }
            
            //查看
            function viewTypeChange(onName, conName) {            selectChange(onName, conName);            //如果是修改,则把查看改成同级别
                if (onName == "cb_viewType") {
                    var edit = document.getElementById("cb_viewType").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                }
                else if (onName == "cb_edit") {
                    var edit = document.getElementById("cb_edit").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                    
                }
                else if (onName == "cb_del") {
                    var edit = document.getElementById("cb_del").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                }
                else if (onName == "cb_sb") {
                    var edit = document.getElementById("cb_sb").value;
                    if (edit != 0) {
                        check(true);
                        selectChange(onName, 'viewType');
                    }
                    
                }
                
            }
              
      

  10.   


    FindControl 只能找到服务器控件,无法找到Html控件的。
      

  11.   

    你把select控件换成CheckBox不就可以取到了吗?