在做repeater(与gridview类似,就不要纠结这个了哈)时在一列中加入了RadioButton控件,但是在选中时出现问题,即不能实现单选。在网上查找了解决方案时,基本给出的都是将服务器控件转换为html控件,或是设置lable后在后台绑定时进行处理对lable进行赋值。
注:赋值GroupName属性值是不能解决问题滴...
Label lab=(Label) g.Cells[0].FindControl("Label2");
if (lab != null)
{
lab.Text = " <input id=/""+lab.ClientID+"/" type=/"radio/" name=/"RadioButton1/" value=/"1/" />";
}
个人感觉处理时有些麻烦,后来找到具体原因是因为页面在进行解析时将RadioButton的name属性赋予了不一样的值,而实现单选功能只需要自动生成的RadioButton控件中的name属性值统一即可实现功能。代码如下:
(1)前台页面代码: <asp:Repeater ID="rep_InstructionMatch" runat="server">
<HeaderTemplate>
<table >
<th>
<td colspan="2">
</td>
</th>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:RadioButton ID="rad_Instruction" runat="server" />
</td>
<td style="cursor: pointer;">
<%#DataBinder.Eval(Container.DataItem,"columnname") %>
</td>
<td>
<a href="javascript:void(0)" target="_blank" οnclick="window.open(href)" style="cursor: pointer;">查看</a>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
(2)jquery处理代码:
$(function () {
$("input[type='radio']").each(function () {
$(this).removeAttr("name");
$(this).attr("name", "instruction");
})
});
经测试没有问题!下面为效果图: