DataList中使用单选按钮

     有个同学在酒店管理系统(二)中遇到一个问题,就是在一个页面中,DataList控件的ItemTemplate列都有RadioButton,那么问题就出现了,一般的话,RadioButton作用就是实现单选;但是如果只是单单把RadioButton放到DataList的ItemTemplate列中,是实现不了单选。那么该怎么样才能实现radiobutton按钮单选呢?也许很多同学这个时候就会想到使用.NET中自带的RadioButtonList这个控件,当然的可以用来解决这个单选的问题。但是不用这个控件,想用脚本来解决的话,那又该怎么办呢?

     下面这段代码也许可以帮我们解决上面的烦恼:

     <script language="javascript" type="text/javascript">
             function RadioButtonSelect(){

                  var dom =  document.all; //取得所有的文档元素
                  var eventSrc = event.srcElement; //事件源(即被click的元素) 
                  if(eventSrc .tagName == "input" &&  eventSrc .type.toLowerCase() == "radio") {
                        for(var i=0;i<dom.length;i++) {
                             if(dom[i].tagName == "input"  &&  dom[i].type.toLowerCase() == "radio") { 
                                   dom[i].checked = false;//把所有Radio都设为未选状态
                             }
                        }
                  } 
                 eventSrc .checked = true;//刚点击过的则设为选中状态
             } 
      </script>

      <body onclick = "RadioButtonSelect()">

      可是这段代码的威力还不够大,对于一个DataList来说就够用了,可有时一个页面的话不单单就这么一个DataList,或者也可以有其他的RadioButton,那么这段代码就失效,使得整个页面的RadioButton都只能选一个了!那么我们又该如何去解决遇到的新问题呢?以下便是针对此问题的一个解决方案:

      <script language="javascript" type="text/javascript">

      function RadioButtonSelect(obj,dlName) {
            var elem = obj.form.elements;
            var dListName= dlName;
            for(var i = 0; i < elem.length; i++) {
                  if(elem[i].type == "radio" && elem[i].id != obj.id && obj.name.subString (0 , elem[i].name.indexOf('$') )== dListName) {
                       elem[i].checked = false; //把不是触发click事件的radio状态设置为未选
                   }
           }
     }

</script>

 

        <asp:DataList ID="dlTest" runat="server">
              <ItemTemplate>
                    <asp:RadioButton ID="rbtnText" runat="server" Text='<%# Eval("Test") %>' οnclick="javascript:RadioButtonSelect(this,'dlTest')" />
              </ItemTemplate> 
         <asp:DataList>

         总结一下这两个实现方法的思路吧。第一个是先找到所有的Radio并把他们的状态设值为false,然后再把触发事件(即被单击)的那个raRadiodio设值为true;而第二个方法是传入2个参数,一个是触发事件的对象obj(其实这个obj对象就是一个Radio),一个是该Radio对象所属的DataList的Name,然后遍历这个Radio属表单下的所有Radio按钮,根据Name找到所有跟他同属于一个DataList的其它Radio,并把这些Radio的状态设为false(即未选)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值