【问题标题】: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>

【问题讨论】:

    标签: c# asp.net


    【解决方案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 属性。然后运行代码:)

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-21
          • 2021-02-15
          • 1970-01-01
          • 2016-02-12
          相关资源
          最近更新 更多