Repeater,datalist 内RadioButton GroupName失效 ,无法单选
2015-06-28 20:02
323 查看
为了让多个RadioButton可以单选,我们通常会加入
GroupName=“xxx"来分组,但如果RadioButton放置在Repeater,datalist里面,设置就会无效,原因是ASP.NET会把Repeater,datalist解释成html页面时候,会把RadioButton解释为<input type=radio>,而且每行的id,
GroupName都不同了,所以 GroupName失效了。
解决办法,直接改用<input type=radio>,但这样后台取值只能用Post方式了,能不能用服务器控件?
考虑使用RadioButtonList,这个解释成html页面,GroupName是相同的。
如果还是想要只用RadioButton,可以这样写
前台(参考用,里面的label标签是我把RadioButton包装成按钮用的,关键是下面的JS 代码)
前台的JS,放置页面里,作用是点击RadioButton 时候,其他RadioButton 都被取消了
后台取值
GroupName=“xxx"来分组,但如果RadioButton放置在Repeater,datalist里面,设置就会无效,原因是ASP.NET会把Repeater,datalist解释成html页面时候,会把RadioButton解释为<input type=radio>,而且每行的id,
GroupName都不同了,所以 GroupName失效了。
解决办法,直接改用<input type=radio>,但这样后台取值只能用Post方式了,能不能用服务器控件?
考虑使用RadioButtonList,这个解释成html页面,GroupName是相同的。
如果还是想要只用RadioButton,可以这样写
前台(参考用,里面的label标签是我把RadioButton包装成按钮用的,关键是下面的JS 代码)
<asp:Repeater ID="Repeater1" runat="server" > <ItemTemplate> <label class="am-btn am-btn-primary am-btn-sm"> <asp:RadioButton GroupName="cbtn" ID="ttonr1" runat="server" Text='<%# Eval("name") %>' value='<%# Eval("name") %>' />(name是数据库字段) </label> </ItemTemplate> </asp:Repeater> <asp:HiddenField ID="HiddenField1" runat="server" />这一行非必需
前台的JS,放置页面里,作用是点击RadioButton 时候,其他RadioButton 都被取消了
<script src="assets/js/jquery.min.js"></script> 需要在assets/js/文件夹有jquery.min.js,网上很多网页模板就有这个文件 <script type="text/javascript"> $(':input:radio').on('change', function () { if ($(this).is(':checked')) { $(this).is(':checked'); $(this).parents().siblings().children().removeAttr("checked"); // console.log('单选框当前选中的是:', $(':input:radio').filter(':checked').val());这行测试用 // document.getElementById("HiddenField1").value = $(this).val();这行非必需,配合网页上面那行非必需,直接赋值,后台就不用循环取Repeater,datalist 内RadioButton的值了 } }); </script>
后台取值
for (int y = 0; y < Repeater1.Items.Count; y = y + 1) { System.Web.UI.WebControls.CheckBox seInfo = Repeater1.Items[y].FindControl("ttonr1") as System.Web.UI.WebControls.CheckBox; if (seInfo.Checked == true) { 选择的radio文字 = seInfo.Text; } }如果在上面直接赋值给隐藏控件,用 string p = HiddenField1.Value.Trim();这样就不需要上面的后台循环代码了
相关文章推荐
- iOS 阶段学习第十天笔记(字符串操作)
- [BZOJ 1012] [JSOI2008] 最大数maxnumber
- Java判断一个字符串是否是数字
- SPL基础知识
- 【百度实习录】新人练习
- Leetcode|Sort List
- [JS]玩转博客园的几个“奇技淫巧”
- ThinkPHP以jquery传送json数据格式的方式实现ajax请求
- 第十六周项目3:max带来的冲突
- hash散列表链表冲突
- JS小Demo实战之一个超级简单的计算器功能的实现。
- SQL中inner join、outer join和cross join的区别
- 跨域资源共享(CORS)问题解决方案
- oracle中存储过程详解
- oracle存储过程
- android handle实现倒计时
- AngularJS身份验证:Cookies VS Tokens
- 1007--Java 时间和日期类型的 Hibernate 映射
- acdream 1412 2-3Trees (组合+DP)
- Bregman divergence