Javascript 为什么第一次单击gridview中的单选按钮什么都不做?

Javascript 为什么第一次单击gridview中的单选按钮什么都不做?,javascript,c#,asp.net,gridview,Javascript,C#,Asp.net,Gridview,我有一个gridview,它有一列单选按钮。我有一个javascript函数,只允许用户点击一个单选按钮。第一次单击gridview时,什么都没有发生。之后的每一次点击都很好 更新: 如果我直接单击单选按钮,第一次它确实有效,但是如果我单击行,我必须单击两次 <script type="text/javascript"> function SelectSingleRadiobutton(rdbtnid) { var rdBtn = document.getEl

我有一个gridview,它有一列单选按钮。我有一个javascript函数,只允许用户点击一个单选按钮。第一次单击gridview时,什么都没有发生。之后的每一次点击都很好

更新: 如果我直接单击单选按钮,第一次它确实有效,但是如果我单击行,我必须单击两次

<script type="text/javascript">
    function SelectSingleRadiobutton(rdbtnid) {
        var rdBtn = document.getElementById(rdbtnid);
        var rdBtnList = document.getElementsByTagName("rbTypeGroup");
        for (i = 0; i < rdBtnList.length; i++) {
            if (rdBtnList[i].type == "radio" && rdBtnList[i].id != rdBtn.id) {
                rdBtnList[i].checked = false;
            }
        }
    }
</script>



<asp:GridView ShowHeader="false" SkinID="noborder" runat="server" ID="gvType" AutoGenerateColumns="false"
                        OnRowDataBound="gvType_RowDataBound" ClientIdMode="Predictable">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:RadioButton ID="optValue" runat="server" Name="options" Style="cursor: default;" Tag="rbTypeGroup" OnClick="SelectSingleRadiobutton(this.id)"/>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Name" />
        <asp:BoundField DataField="Description" />
    </Columns>
</asp:GridView>

protected void gvType_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HibConfig.IncidentType type = (HibConfig.IncidentType)e.Row.DataItem;

        RadioButton rdo = ((RadioButton)e.Row.FindControl("optValue"));
        rdo.Checked = incident.Type.Id == type.Id ? true : false;
        e.Row.Attributes.Add("onclick", string.Format("document.getElementById('{0}').click();", rdo.ClientID));
        e.Row.Attributes.Add("dataId", type.Id.ToString());
    }
}

功能选择SingleRadioButton(rdbtnid){
var rdBtn=document.getElementById(rdbtnid);
var rdBtnList=document.getElementsByTagName(“rbTypeGroup”);
对于(i=0;i
初始化JS后,可能会加载网格视图。我认为您看到的是,在初始页面加载时,您的js没有gridview的上下文。初次单击网格行会导致回发,然后加载JS文件。如果您使用的是Jquery,您可能希望将JS包装在
document.ready()
$function()调用中。另一个选项是尝试在文档底部加载JS,以确保DOM已呈现。
我已经有很多JS文件“破坏”了页面的上下文,或者页面上有asp元素。回发可能会导致JS出现许多问题