您的位置:首页 > 大数据 > 人工智能

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

2013-04-02 13:48 162 查看
在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控件的单选和值的传递。

最终效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: