在GridView中加入单选按钮RadioButton

本文介绍了一种在GridView中实现单选按钮的有效方法,并提供了一个投票系统的实例。通过使用JavaScript来确保同一行内的单选按钮只能选择一个,该方法克服了传统实现方式的局限。
首先鄙视下dudu:不管你是什么文章,如果你加上一句:恳请dudu能够让我在首页挂一天,那么这文章就不会被dudu撤下来的,但是如果你没加,那不好意思,dudu的大刀就会向你举起!这是典型的顺风耳!

这段时间一直为网站的事醉心于代码,除了每天早晨给出交易信号外,基本上没有关注过行情了.但代码仅是我的爱好而已,操盘才是我的正业,趁现在心思还没有完全转到操盘上面来,把这个项目我整理的一些代码记下来,有点意义的就是如何给GridView加入单选按钮了.
在网上查阅了一些文章,无非就是:
1,放一个html单选控件:<input type="radio"...
2,放一个RadioButtonList;

这两种方法都有弊端;第一种如果我们要在后台取radiobutton的值就显得很麻烦,第二种会让我们不好布局,但是大家知道,如果仅仅是在GridView里面加入RadioButton,我们就实现不了单选,后面查阅了一老外的文章,找到了一种自认为比较好的方法,实现思路是:在后台给radiobutton加入个onclick属性,在前台当用户单击这个单选按钮的时候用js去遍历,取消其他单选的选择,下面是配合一个投票系统的代码,这个投票系统能够在后台自动生成是单选还是复选按钮,最后面的是一个实例.demo请见: http://www.yinuof.com/topiccontent.aspx?id=135&class=5
 1 None.gif < asp:Panel ID = " literalVote "  runat = " server "  Visible = " false " >  
 2 None.gif                  < asp:GridView ID = " gridVote "  runat = " server "  AutoGenerateColumns = " False "  BackColor = " #B6C9E7 "  CssClass = " tableBack "  CellPadding = " 3 "  CellSpacing = " 1 "  ShowHeader = " False "  Width = " 100% "  DataKeyNames = " this_id,vote_type,this_title "  OnRowDataBound = " gridVote_RowDataBound " >  
 3 None.gif                      < Columns >  
 4 None.gif                          < asp:TemplateField >  
 5 None.gif                             < ItemTemplate >  
 6 None.gif                                < asp:PlaceHolder ID = " placeVote "  runat = " server "   />  
 7 None.gif                             </ ItemTemplate >  
 8 None.gif                              < ItemStyle BackColor = " White "   />  
 9 None.gif                          </ asp:TemplateField >  
10 None.gif                          < asp:TemplateField >  
11 None.gif                             < ItemTemplate >  
12 None.gif                                < asp:Image ID = " voteImage "  Runat = " server "  Height = " 8px "  Width = ' <%# FormatImage(Convert.ToInt32(Eval("vote_num").ToString())) %> '  ImageUrl = " img/bar2.gif " ></ asp:Image ><% #Eval( " vote_num " %>  
13 None.gif                             </ ItemTemplate >  
14 None.gif                              < ItemStyle Width = " 50% "  BackColor = " White "   />  
15 None.gif                          </ asp:TemplateField >  
16 None.gif                      </ Columns >  
17 None.gif                  </ asp:GridView >  
18 None.gif                  < div style = " margin-top:5px;font-size:12px;color:#000000; " >  
19 None.gif                     < asp:Button UseSubmitBehavior = " false "  Text = " 我要投票 "  ID = " buttonVote "  runat = " server "  OnClick = " buttonVote_Click "   />& nbsp;【截至时间: < asp:Literal ID = " literalTimeout "  runat = " server "   />& nbsp; |& nbsp; < a href = ' voteuser.aspx?id=<%=Request.QueryString["id"] %> '   class = " aTitle "  target = " _blank " > 查看投票用户 </ a > 】 
20 None.gif                  </ div >  
21 None.gif              </ asp:Panel >

js代码:
 1 None.gif < script language = " javascript " >             function SetUniqueRadioButton(nameregex, current) 
 2 ExpandedBlockStart.gifContractedBlock.gif             dot.gif
 3InBlock.gif               re = new RegExp(nameregex); 
 4InBlock.gif               for(i = 0; i < document.forms[0].elements.length; i++
 5ExpandedSubBlockStart.gifContractedSubBlock.gif               dot.gif
 6InBlock.gif                  elm = document.forms[0].elements[i] 
 7InBlock.gif                  if (elm.type == 'radio'
 8ExpandedSubBlockStart.gifContractedSubBlock.gif                  dot.gif
 9InBlock.gif                     if (re.test(elm.name)) 
10ExpandedSubBlockStart.gifContractedSubBlock.gif                     dot.gif
11InBlock.gif                        elm.checked = false
12ExpandedSubBlockEnd.gif                     }
 
13ExpandedSubBlockEnd.gif                  }
 
14ExpandedSubBlockEnd.gif               }
 
15InBlock.gif               current.checked = true
16ExpandedBlockEnd.gif            }
 
17 None.gif          </ script >

后台代码:
None.gif protected   void  gridVote_RowDataBound( object  sender, GridViewRowEventArgs e) 
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
InBlock.gif        PlaceHolder place 
= (PlaceHolder)e.Row.FindControl("placeVote"); 
InBlock.gif        
if (place != null
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif
InBlock.gif            
if (gridVote.DataKeys[e.Row.RowIndex].Values["vote_type"].ToString().ToLower() == "false"
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{  
InBlock.gif               
//单选 
InBlock.gif
                RadioButton radioVote = new RadioButton(); 
InBlock.gif                radioVote.ID 
= "radioVote"
InBlock.gif                
string script = "SetUniqueRadioButton('gridVote.*Vote',this)"
InBlock.gif                radioVote.Attributes.Add(
"onclick",script); 
InBlock.gif                
//绑定数据 
InBlock.gif                
//BindItemData(radioVote, Int32.Parse(gridVote.DataKeys[e.Row.RowIndex].Values["this_id"].ToString())); 
InBlock.gif
                radioVote.Text = gridVote.DataKeys[e.Row.RowIndex].Values["this_title"].ToString(); 
InBlock.gif                place.Controls.Add(radioVote); 
InBlock.gif                
ExpandedSubBlockEnd.gif            }
 
InBlock.gif            
if (gridVote.DataKeys[e.Row.RowIndex].Values["vote_type"].ToString().ToLower() == "true"
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif
InBlock.gif               
//多选 
InBlock.gif
                CheckBox checkVote = new CheckBox(); 
InBlock.gif                checkVote.ID 
= "checkVote"
InBlock.gif                checkVote.Text 
= gridVote.DataKeys[e.Row.RowIndex].Values["this_title"].ToString(); 
InBlock.gif                place.Controls.Add(checkVote); 
ExpandedSubBlockEnd.gif            }
 
ExpandedSubBlockEnd.gif        }
 
ExpandedBlockEnd.gif    }

转载于:https://www.cnblogs.com/pwqzc/archive/2007/07/17/820728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值