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

CheckBoxList控件如何在后台设置单选

2013-04-12 
CheckBoxList控件怎么在后台设置单选 protected void CheckBoxList0_SelectedIndexChanged(object sender,

CheckBoxList控件怎么在后台设置单选
 protected void CheckBoxList0_SelectedIndexChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < CheckBoxList0.Items.Count; i++)
        {

            if (CheckBoxList0.SelectedItem.Value == CheckBoxList0.Items[i].Value.ToString())
                CheckBoxList0.Items[i].Selected = true;
            else
                CheckBoxList0.Items[i].Selected = false;
        }
    }

vvvvvvvvvvv
[解决办法]
楼主代码行不通
[解决办法]

引用:
引用:Refer:


vvvvvvvvvvv要后台实现不要JS

前台js实现更简单点,如果后台实现也可以,不过麻烦点


public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //先遍历CheckBoxList 取出只有1个选项时辰的index
        int iCount=0;int iTemp=0;
        for (int i = 0; i < CheckBoxList1.Items.Count; i++)
        {
            if (CheckBoxList1.Items[i].Selected)
            {
                iCount++;
                iTemp=i;
            }
        }
        if (iCount == 1)
        {
            ViewState["oldSelect"] = iTemp;
        }
    }
    protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (!CheckBox1.Checked)
        {
            int iCount = 0;
            int iTemp = (Int32)ViewState["oldSelect"];
            for (int i = 0; i < CheckBoxList1.Items.Count; i++)
            {
                if (CheckBoxList1.Items[i].Selected)


                {
                    iCount++;
                    if (i != iTemp)
                    {
                        ViewState["newSelect"] = i;
                    }
                }
            }
            if (iCount > 1)//点下第二个
            {
                int iTempOld = (Int32)ViewState["oldSelect"];
                int iTempNew = (Int32)ViewState["newSelect"];
                CheckBoxList1.Items[iTempOld].Selected = false;
                CheckBoxList1.Items[iTempNew].Selected = true;
                ViewState["oldSelect"] = ViewState["newSelect"];
            }
        }

    }
}


[解决办法]
 window.onload = function () {
            var cbl = document.getElementById('<%= CheckBoxList0.ClientID %>')
            var inputs = cbl.getElementsByTagName("input");

            for (var i = 0; i < inputs.length; i++) {
                if (inputs[i].type == "checkbox") {
                    inputs[i].onclick = function () {                                          
                        var cbs = inputs;
                        for (var i = 0; i < cbs.length; i++) {
                            if (cbs[i].type == "checkbox" && cbs[i] != this && this.checked) {


                                cbs[i].checked = false;
                            }
                        }
                    }
                }
            }}
        

引用二楼的!
有些时候人都喜欢自找乐子,其实用RadioButtonList
[解决办法]
楼主你是不是分不清前台和后台?你的要求根本就是前台的要求,与后台一点关系也没有。难道说用户每check一个checkbox,你都要把页面回传,然后去掉其它选中的chekbox,再把页面返回给用户?这种糟糕的用户体验是下下下策。

在用户回传表单之前,所有的事情都发生在用户端的浏览器内,所以你无法知道用户到底选了几个checkbox。你能做的就是用javascript进行简单的控制,但同时,你也需要在服务器端做第二次检查,保证只有一项被选中,因为客户端传过来的数据是“不可靠”的。

最后,这个世界没有什么CheckBoxList,一切都只是HTML+JavaScript而已。
[解决办法]
用jquery试试!!标签选择器,<input type="checkbox" id="ch1" /> $("input :checkbox") 要选另一个时就把上一个被选中的给设置 checked.selected=false; 
[解决办法]
这些东西,当然是交给JS去做啦
[解决办法]
用js控制吧
js:
function ChkCbSlt(obj,id,num,num2)
{
    if(obj.checked)
    {
        for(var i=1;i<=num;i++)
        {
            if(num2==i)
            {
                  $(id+num2).checked=true;
            }
            else
            {
                  $(id+i).checked=false;
            }
        }
    }
}

调用:
                        <asp:CheckBox ID="cbToYourFriends1" runat="server" onclick="ChkCbSlt(this,'cbToYourFriends',4,1)" Text="(A)愿意"/>
                        <asp:CheckBox ID="cbToYourFriends2" runat="server" onclick="ChkCbSlt(this,'cbToYourFriends',4,2)" Text="(B)不愿意"/>
                        <asp:CheckBox ID="cbToYourFriends3" runat="server" onclick="ChkCbSlt(this,'cbToYourFriends',4,3)" Text="(C)不确定"/>
                        <asp:CheckBox ID="cbToYourFriends4" runat="server" onclick="ChkCbSlt(this,'cbToYourFriends',4,4)" Text="(D)不想回答 "/>


[解决办法]
http://www.cnblogs.com/wrz923/archive/2008/07/15/1243401.html
[解决办法]
http://www.cnblogs.com/mextb1860/archive/2008/04/11/1147841.html
[解决办法]
$(function(){--页面加载完成时绑定checkbox的单击事件
 $("input[name='CheckBoxList0']").live('click',function(){
     $("input[name='CheckBoxList0']").attr("checked",false);
     $(this).attr("checked",true);
 });
});

注意:代码中的CheckBoxList0对应的是checkbox的name属性,你修改一下就行了
[解决办法]



2楼正解....
[解决办法]



说错了  是6楼..


引用:
引用:引用:Refer:


vvvvvvvvvvv要后台实现不要JS
前台js实现更简单点,如果后台实现也可以,不过麻烦点

C# code?12345678910111213141516171819202122232425262728293031323334353637383940414……




+1

热点排行