如何防止单选按钮进行多选?

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”一样 所以在这种情况下,在脚本而不是&lt;%=Docgrid.ClientID%&gt;中,您需要使用在html中生成的网格的实际ID。 我在我的设计代码中使用了像 这样的javascript,我改变了我的单选按钮标签 但它不能以我使用的方式工作.. 请给我解决方案 但是我怎么知道html生成的id呢?【参考方案2】:

您可以在此处使用 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】:

将组的所有单选按钮放在容器对象中,例如 PanelGroupBox 正如建议的 here。

通常单选按钮默认只接受一个选择,当它被分组时。但是如果你仍然有问题,你可以使用一个布尔控制变量(例如bool isAnySelected)并为你的单选按钮的检查实现一个监听器。选择其中一个时,请查找变量,如果变量是false制作变量true。如果变量已经是true,请取消选中单选按钮。

【讨论】:

【参考方案4】:

试试这个-

new @id = kk 应该是 new @id = kk, Name = "grp" 以防止多选单选按钮。

【讨论】:

【参考方案5】:

解决此问题的最简单方法是在所有单选按钮的属性窗口中将 GroupName 设置为任意名称。就我而言,我将 GroupName 设置为“A”。将相同的 GroupName 设置为所有 Radio Buttons 属性。然后运行代码:)

我希望这可能会有所帮助。

【讨论】:

以上是关于如何防止单选按钮进行多选?的主要内容,如果未能解决你的问题,请参考以下文章

radiogroup单选按钮出现多选问题

如何在 swift (iOS) 中创建单选按钮和复选框?

下拉框,多选按钮,单选按钮的保存修改

winform dataGridView中如何添加单选按钮列?

html:html 网页中 如何实现多选框或单选框,点击字就能选中,而不是非要点小按钮。

防止单击父类别单选按钮