我认为这必须是我在网络表单中做过的最令人沮丧的事情。然而人们会认为这将是世界上最容易做到的事情。就是这样:
我的.aspx页面上需要2个单独的单选按钮列表。一组允许客户选择一个选项。另一组也是为了不同的目的。但只有一组可以选择一个无线电按钮。
好的我已经尝试在同一页面上使用2个asp.net Radiobuttonlists控件。使用GroupName解决了令人讨厌的错误(asp.net分配了控件的uniqueID,它阻止了groupname的工作,因为现在,2个radiobuttonlists不能为所有的radiobutton提供相同的groupname,因为每个radiobuttonlist都有不同的uniqueID,因此bug分配了呈现按钮时,唯一ID作为name属性。因为名称集不同,所以它们不是互斥的。无论如何,所以我创建了自定义RadioButtonListcontrol并修复了该组名问题。
但是当最终发生的时候,我在我的.aspx页面上放置了我的新自定义radiobuttonlist控件的2个实例,所有都是膨胀,直到我注意到每次检查radiobuttonlist1.SelectedValue或radiobuttonlist2.SelectedValue(没有我正在检查的事情)值总是吐回string.empty而我无法找出原因(见http://forums.asp.net/t/1401117.aspx)。
今晚第三次尝试并进入黎明(没有睡眠)。我试图完全废弃尝试使用2个自定义radiobuttonlists因为string.empty问题并试图通过使用2个asp.net转发器和标准输入HTML标签吐出2套radiobuttonlists。有那个工作。好的但是2个列表仍然不是互斥的。我可以在repeater1的第一组radiobuttons中选择一个值,同样也可以用于repeater2。我不能为我的生活得到“套装”是相互排斥的无线电按钮组。
答案 0 :(得分:4)
由于您有两组单选按钮,您想要作为一组单选按钮使用,解决方案很简单:将其设为一组单选按钮。
您遇到的唯一问题是,您获得的值与两个列表中的名称相同,但可以通过在值中添加前缀来解决,以便您可以轻松识别选项所在的列表。
答案 1 :(得分:2)
更新:根据发布的新信息作为答案。我在原始答案中提出的选项对应于3.您必须考虑以下内容:
这不是那么多代码,只是列表索引上的额外内容,以及一些简单的事情:
int? list1Value = null;
int? list2Value = null;
var value = Request.Form["somegroup"];
if (value.StartsWith("List1"))
list1Value = int.Parse(value.Substring(5));
else
list2Value = int.Parse(value.Substring(5));//Assuming List2 as prefix
原件:
我看到了你的另一个问题,你只需要使用相同的组名。确保所有项目的值都不同,无论它们来自哪个列表。实现此目的的一种方法是在值中添加一些内容,例如:<%#“List1-”+ Eval(“ID”)%>并修改读取Request.Form [“yourgroupname”]的代码。
答案 2 :(得分:0)
我认为你应该只使用RadioButtons而不是RadioButtonLists。
Here's an article提供了解决radiobutton命名错误的解决方案。
答案 3 :(得分:0)
虽然这篇文章已于1年前发布,但我只是阅读它,因为我面临同样的问题。
目前我有一个使用jQuery的解决方案:
客户端脚本(您还必须包含jQuery)
function SetRadio(rb) {
$('input:checked').attr('checked', false);
rb.checked = true;
}
对于每个radiobutton(这是radiobuttonlist中的listitem),我在服务器端添加以下内容:
li.Attributes.Add("onclick", "javascript:SetRadio(this)");
对我来说,这适用于IE和Firefox,有3个radiobuttonlists,不使用组名。 您可以检查每个radiobuttonlist以查看selecteditem /值,或者您可以扩展SetRadio函数,以便将所选值存储在隐藏字段中。
此致 中号