gridview中实现radiobutton的单选示例

时间:2022-01-17 07:41:10

c# 代码 

复制代码代码如下:


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 

if (e.Row.RowType == DataControlRowType.DataRow) 

RadioButton rb = (RadioButton)e.Row.FindControl("rbtSelect"); 
if (rb != null) 
rb.Attributes.Add("onclick", "onClientClick('" + rb.ClientID + "','" + e.Row.RowIndex + "')"); //把选中行的RowIndex也传过去,提交后在服务器端取值时用 


javascript代码 

复制代码代码如下:


<script type="text/javascript"> 
function onClientClick(selectedId, rowIndex) 

//用隐藏控件记录下选中的行号 
var hidden = document.getElementById("Hidden1").value=rowIndex; 

var inputs = document.getElementById("<%=GridView1.ClientID%>").getElementsByTagName("input"); 
for(var i=0; i <inputs.length; i++) 

if(inputs[i].type=="radio") 

if(inputs[i].id==selectedId) 
inputs[i].checked = true; 
else 
inputs[i].checked = false; 




</script> 


hmtl代码: 

复制代码代码如下:


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
Width="648px" Font-Size="9pt" onrowcommand="GridView1_RowCommand" 
DataKeyNames="id" onrowdatabound="GridView1_RowDataBound"> 
<Columns> 
<asp:TemplateField> 
<ItemTemplate> 
<asp:RadioButton ID="rbtSelect" runat="server" /> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="文件名"> 
<ItemTemplate> 
<asp:LinkButton runat="server" ID="lbtDirName" CommandName="Change" CommandArgument='<%#Container.DataItemIndex %>'> 
<%#Eval("AA") %> 
</asp:LinkButton> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:BoundField DataField="BB" HeaderText="字段1" /> 
<asp:BoundField DataField="CC" HeaderText="字段2" /> 
<asp:BoundField DataField="DD" HeaderText="字段3" /> 
<asp:BoundField DataField="EE" HeaderText="字段4" /> 
</Columns> 
</asp:GridView> 

<input id="Hidden1" type="hidden" runat="server"/>