
正文
解决radiobutton在gridview中无法单选的一种方法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
最近在项目中有个单选gridview中某一项的需求,使用radiobutton后发现,虽然最终选择出来的是一项,但是在页面上却可以选择多项,经过查看生成的html代码,发现生成的radio的name属性并不一样,即使已经加了groupname。解决方法代码如下
页面代码:
<asp:GridView ID="SmartGridView1" runat="server" AutoGenerateColumns="False"
PageSize="" AllowPaging="true" DataSourceID="SmartDataSource1" DataKeyNames="DecisionItemID" onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="选择" ItemStyle-Width="5px" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:RadioButton runat="server" GroupName="SelDecision" ID="cbSel" key='<%#Eval("DecisionItemID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField DataField="SerialNumber" HeaderText="决策事项编号" ItemStyle-Width="80px"
ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="DecisionMakingMatters" HeaderText="决策事项" ItemStyle-Width="300px"/> </Columns>
</asp:GridView>
js代码
function onClientClick(selectedId, rowIndex) {
var inputs = document.getElementById("<%=SmartGridView1.ClientID%>").getElementsByTagName("input");
for (var i = ; i < inputs.length; i++) {
if (inputs[i].type == "radio") {
if (inputs[i].id == selectedId)
inputs[i].checked = true;
else
inputs[i].checked = false;
}
}
}
后台代码
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
RadioButton rb = (RadioButton)e.Row.FindControl("cbSel");
if (rb != null)
rb.Attributes.Add("onclick", "onClientClick('" + rb.ClientID + "','" + e.Row.RowIndex + "')");
}
}








