我需要:
背景信息:
我有一个转发器。
对于转发器中的每一行,都有一个关联的文档,可以是“生成”或“重新打印”。
用户应该能够在任何给定行中选择最多一个复选框。在此之后,单击一次按钮将在一次通过中处理所有选择。
当我搜索“互斥复选框”时,常见的回答是“这就是单选按钮的用途。”
当我搜索“Deselectable radio buttons”时,常见的回答是“这就是复选框的用途。”
其他人已经提出了自定义JavaScript / jQuery解决方案,但没有提到CheckBoxes / RadioButtons及其ID的数量是可变的。
我发现很难相信ASP.NET控件不支持此功能。有人遇到过这个问题吗?是否有我可以使用的另一个控件,或者这需要自定义解决方案吗?
注意:我可以访问的唯一第三方软件是Telerik的ASP.NET AJAX用户界面,它没有明显的解决方案。
答案 0 :(得分:2)
使用Javascript:
在转发器中使用“互斥复选框”示例window.onload = function(){
var repeater = document.getElementById('repeater');
var chks = repeater.querySelectorAll('[type=checkbox]');
for(var i = 0,chk;chk = chks[i];++i){
chk.onclick = function(){
if(this.checked){
for(var j=0,ch;ch=chks[j;++j]){
if(ch !== this)
ch.checked = false;
}//for
}//if(this...
}//chk.onclick
}//for(var i
}//window.onload
答案 1 :(得分:1)
使用复选框列表并处理SelectedIndexChanged
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (checkedListBox1.CheckedItems.Count > 0)
{
foreach (int i in checkedListBox1.CheckedIndices)
{
checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
}
}
}
答案 2 :(得分:0)
我更像是一个StackOverflow人,但我最终在GitHub上发现了这个。
https://gist.github.com/kikegarcia/6104607
这就是我最终的结果,以及一些文档。基本上是一样的,但是使用 .prop 代替 .attr ,因为阅读Tim Down对这两者之间差异的解释:.prop() vs .attr()
// mutually exclusive checkboxes within the scope of a repeater row
function cbOnClick(sender) {
if (sender.checked)
$(sender).siblings(":checkbox").prop("checked", false);
// 1 2 3 4 5 6
}
获取复选框的兄弟元素...
...使用type =“checkbox”。
访问其属性...