如何在Repeater控件中实现RaidoButton单选

在Asp.Net的Repeater控件中,由于内部控件是动态生成的,那么为了保持各控件的独立不相互混淆,Repeater会自动为内部的各种服务器端控件生成唯一的ID。然而很不幸,RaidoButton的Name属性也不能幸免,而我们知道RaidoButton是通过Name属性进行归组的,也就是说在Repeater控件中的RadioButton失去了最原始的作用——单选。

那么如果我们要实现这个单选应该如何做呢?进过一番百度,我发现网上说可以重新编译Repeater控件,但是这个方法想想就觉得不切实际。还有一种就是通过Javascript把RaidoButton的Name属性强制改为一样的,但这种虽说是可以实现,但是在后台却获取不到他的Checked是否为True了,因而这种方法是外强中干呐。

在一番思考后,终于有了收获,最终的解决方法是:客户端RadioButton + jquery对每次RadioButton的选中事件进行响应 + 在响应事件中将RadioButton的Value属性传值到Hidden服务器端控件

(1)实现RaidoButton单选。

在这里我们使用客户端版的Radio控件,既不包含“runat = server”属性,这样Repeater只是简单地将控件复制到各列。这样我就能保证控件的Name属性一致。

<input name="sel_addr" type="radio" class="radio" value="<%#((BookShop.Model.Orderaddress)Container.DataItem).Id %>" />
                                        
(2)在Repeater控件外插入Hidden服务器端控件

<asp:HiddenField ID="HdnSelectedValues" runat="server" />

(3)通过JQuery对每次RaidoButton的点击事件进行响应。

$("input[type=radio]").live("click", function () {
		$(".radio").each(function () {
                    if ($(this).attr("checked") == true) {
                        value = $(this).val();
                    }
                    $("#<%=HdnSelectedValues.ClientID%>").val(value);
                })

            })


(4)后台通过this.HdnSelectedValues.Value取值

this.HdnSelectedValues.Value


进过上面四步,我就就实现了在radio控件的单选和值的传递。


最终效果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值