如何防止单选按钮进行多选?
Posted
技术标签:
【中文标题】如何防止单选按钮进行多选?【英文标题】:how to prevent radiobutton for multiple selection? 【发布时间】:2016-08-16 21:04:04 【问题描述】:我在我的网格视图控件中使用单选按钮,现在我想允许用户在网格视图中只选择一个单选按钮,但我无法做到这一点。下面是我在设计中的代码。请帮助我。
<asp:GridView ID="Docgrid" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
runat="server" AutoGenerateColumns="false" BorderStyle="None" GridLines="None">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:RadioButton ID="chkRow" GroupName='docid' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="DocId" ItemStyle-Width="50" />
<asp:BoundField DataField="DocName" HeaderText="DocName" ItemStyle-Width="50" />
<asp:BoundField DataField="DocType" HeaderText="DocType" ItemStyle-Width="50" />
<asp:BoundField DataField="Size" HeaderText="Size" ItemStyle-Width="50" />
<asp:BoundField DataField="UploadedBy" HeaderText="UploadedBy" ItemStyle-Width="50" />
<asp:BoundField DataField="Status" HeaderText="Status" ItemStyle-Width="50" />
<asp:TemplateField HeaderText="UpdatedBy" ItemStyle-Width="50">
<ItemTemplate>
<asp:Label ID="UpdatedBy" runat="server" Text='<%# Eval("UpdatedBy") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
【问题讨论】:
【参考方案1】:试试下面,
如下更改您的单选按钮,
<asp:RadioButton ID="chkRow" GroupName='docid' runat="server" onclick = "RadioCheck(this);" />
在下面添加javascript,
<script type = "text/javascript">
function RadioCheck(rb)
var gv = document.getElementById("<%=Docgrid.ClientID%>");
var rbs = gv.getElementsByTagName("input");
var row = rb.parentNode.parentNode;
for (var i = 0; i < rbs.length; i++)
if (rbs[i].type == "radio")
if (rbs[i].checked && rbs[i] != rb)
rbs[i].checked = false;
break;
</script>
【讨论】:
如果我在我的设计代码中添加这个脚本,它工作正常。 我想将此方法添加到我项目中的任何 .js 文件中,就像它位于“../AllJavaScript/form1.js”一样 所以在这种情况下,在脚本而不是<%=Docgrid.ClientID%>
中,您需要使用在html中生成的网格的实际ID。
我在我的设计代码中使用了像 这样的javascript,我改变了我的单选按钮标签您可以在此处使用 Radiobuttonlist 选择其中一项
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem>Option 1</asp:ListItem>
<asp:ListItem>Option 2</asp:ListItem>
<asp:ListItem>Option 3</asp:ListItem>
</asp:RadioButtonList>
【讨论】:
能否请您为 gridcontrol 做这件事,并举例说明如何在网格视图中使用单选按钮列表?【参考方案3】:将组的所有单选按钮放在容器对象中,例如 Panel
或 GroupBox
。 正如建议的 here。
通常单选按钮默认只接受一个选择,当它被分组时。但是如果你仍然有问题,你可以使用一个布尔控制变量(例如bool isAnySelected
)并为你的单选按钮的检查实现一个监听器。选择其中一个时,请查找变量,如果变量是false
制作变量true
。如果变量已经是true
,请取消选中单选按钮。
【讨论】:
【参考方案4】:试试这个-
new @id = kk 应该是 new @id = kk, Name = "grp" 以防止多选单选按钮。
【讨论】:
【参考方案5】:解决此问题的最简单方法是在所有单选按钮的属性窗口中将 GroupName 设置为任意名称。就我而言,我将 GroupName 设置为“A”。将相同的 GroupName 设置为所有 Radio Buttons 属性。然后运行代码:)
我希望这可能会有所帮助。
【讨论】:
以上是关于如何防止单选按钮进行多选?的主要内容,如果未能解决你的问题,请参考以下文章
winform dataGridView中如何添加单选按钮列?