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

时间:2016-07-28 20:07:46

标签: c# asp.net

我在gridivew中使用单选按钮。我想一次选择1个单选按钮而不是多个。我尝试了这个但没有工作,即它也禁用了唯一选择的那个。

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);
    }
}

}

1 个答案:

答案 0 :(得分:0)

试试这段代码:

GridView的

        <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>

从DB

填写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;
            }
        }
    }
}