读书人

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

发布时间: 2013-04-12 18:33:11 作者: rapoo

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

读书人网 >asp.net

热点推荐