以下代码有问题,因为我可以同时选择多个单选按钮....如何使以下代码只选择一个单选按钮?请帮忙。
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource_BGlist">
<ItemTemplate>
<asp:RadioButton ID="Radio1" GroupName="BG_name" runat="server" Text='<%# Eval("BG_fileName") %>' />
<asp:Label ID="BG_fileNameLabel" runat="server" Text='<%# Eval("BG_fileName") %>' />
</ItemTemplate>
</asp:ListView>
答案 0 :(得分:0)
实现此目的的最简单方法是将listview包装在ASP.NET Panel或GroupBox中,ASP将实现您想要的分组。
添加面板不会将单选按钮组合在一起,如果它们包含在某种转发器中。可能最好的解决方案是使用Grebets' Answer中建议的RadioButtonList。
如果这不符合您的需求,您可以在创建后使用javascript更改单选按钮。添加到页面底部时,以下代码将起作用:
<script type="text/javascript">
var inputElements = document.getElementsByTagName("input");
for (var inputName in inputElements) {
var input = inputElements[inputName];
if (input.type === "radio") {
input.name = "Group1";
}
}
</script>
如果您使用的是jQuery,可以简化脚本。
答案 1 :(得分:0)
我认为最有效的方法是使用RadioButtonList:
<asp:RadioButtonList ID="RadioButtonList1" runat="server" DataTextField="BG_fileName" DataValueField="BG_fileName" DataSourceID="SqlDataSource_BGlist">
</asp:RadioButtonList>
如果你想在代码隐藏中使用数据源(就像我一样):
public class MyClass
{
public string BG_fileName { get; set; }
public MyClass(string bgFileName)
{
BG_fileName = bgFileName;
}
}
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
RadioButtonList1.DataSource = new List<MyClass>
{
new MyClass("test string 1"),
new MyClass("test string 2"),
new MyClass("test string 3")
};
RadioButtonList1.DataBind();
}
}