У меня есть сетка, у которой есть столбец переключателей. У меня есть функция javascript, которая позволяет пользователю только щелкнуть по одному переключателю. При первом щелчке по gridview ничего не происходит. Каждый клик после этого отлично работает.Почему первый щелчок на переключателе в 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());
}
}