繁体   English   中英

为什么单选按钮不起作用?

[英]Why doesn't radio button work?

我在gridivew中使用单选按钮。 我想一次选择一个单选按钮,但不要多个。 我试过了,但是不起作用,即它也禁用了唯一选择的一个。

protected void btnAward_CheckedChanged(object sender, EventArgs e)
{
    try
    {
        foreach (GridViewRow gr in gvAppliedWorks.Rows) 
        {
            int RowIndex = gr.RowIndex;
            int AppliedWorkID = gvAppliedWorks.DataKeys[gr.RowIndex].Value.ToInt32();
            RadioButton rdbtn = gr.FindControl("btnAward") as RadioButton;

            if (rdbtn.Checked == true) 
            {
                //if(RowIndex )
                rdbtn.Checked = false;
            }
        }
    }
    catch (Exception ex)
    {           
          Utility.Msg_Error(Master, ex.Message);
    }
}

}

试试这个代码:

网格视图

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:BoundField DataField="id" HeaderText="ID" />
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:BoundField DataField="Age" HeaderText="Age" />
            <asp:BoundField DataField="Email" HeaderText="Email" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:RadioButton runat="server" id="rbtn1" name="rbtn" GroupName="rgrp" onclick = "RadioCheck(this);" ></asp:RadioButton>
                    <asp:HiddenField ID="HiddenField1" runat="server" Value = '<%#Eval("ID")%>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

从数据库填充gridview的代码

        protected void bind()
    {
        using (SqlConnection con = new SqlConnection("Connection string"))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("Select * from tableName", con);
            SqlDataReader dr = cmd.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();
            con.Close();
        }
    }

最后添加此脚本以避免选择多个

    <script type = "text/javascript">
 function RadioCheck(rb) {
    var gv = document.getElementById("<%=GridView1.ID%>");
    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;
            }
        }
    }
}    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM