获取多个RadioButton的值,我们一般会使用服务器控件RadioButtonList:
<asp:RadioButtonList ID="rbl" runat="server"> <asp:ListItem Value="1">单选1</asp:ListItem> <asp:ListItem Value="2">单选2</asp:ListItem> <asp:ListItem Value="3">单选3</asp:ListItem> </asp:RadioButtonList>
后台通过 this.rbl.SelectedValue 来获取选则的值,关于RadioButtonList的使用,这里就不介绍了。
由于RadioButtonList的排列是有规则的,不管是横排还是竖排,紧凑还是对齐。
那么,如果是一组没有规则的RadioButton,那么这些值怎么获取呢?
<asp:RadioButton ID="rb1" runat="server" GroupName="new" Text="单选1" /> <div>……</div> <asp:RadioButton ID="rb2" runat="server" GroupName="new" Text="单选2" /> <div>……</div> <asp:RadioButton ID="rb3" runat="server" GroupName="new" Text="单选3" /> <div>……</div>
办法当然有很多,比如最常用的:当选中值的时候,用JS将值放入页面的隐藏控件中,再在后台获取隐藏控件的值。
这里介绍另外一种方法,比如页面禁用JS的时候,这种方法就有效了:
首先,在涵盖所有需要取值的RadioButton外面,加一个div,并且runat="server"
<div id="div1" runat="server"> <asp:RadioButton ID="rb1" runat="server" GroupName="new" Text="单选1" /> <div>……</div> <asp:RadioButton ID="rb2" runat="server" GroupName="new" Text="单选2" /> <div>……</div> <asp:RadioButton ID="rb3" runat="server" GroupName="new" Text="单选3" /> </div> <div>……</div>
然后,后台写一个这样的方法:
public string GetRadioButtonGroupValue(Control ctrl, string controlName) { foreach (Control control in ctrl.Controls) { if (control is RadioButton) { RadioButton lControl = control as RadioButton; if (lControl.Checked && lControl.GroupName == controlName) { return lControl.Text; } } } return null; }
最后,调用就可以了:
GetRadioButtonGroupValue(this.div1, "new")