GridView中的RadioButton列之间不能互斥
GridView中的RadioButton列与CheckBox列
GridView拥有大量的内置功能,可以使用不同的默认filed来放置显示诸如TextBox、Buttos等等控件,支持模板是GridView的最大的功能,可以添加额外的、GridView没有的功能,例如RadioButton列。
RadioButton可以让用户只选中一列,而CheckBox可以选中多列。
可能首先想到的GridView中不包含有RadioBox列,是在ItemTemplate中添加RadioBox列,好像不行,这些RadioBox不会相互排斥,最终是用户可以选中多列。
代码段1:
<asp:GridView ID="RadioCheck" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField HeaderText=".">
<ItemTemplate>
<asp:RadioButton ID="btnRadio" runat="server" GroupName="ProductGroup" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProductName" HeaderText="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
</Columns>
</asp:GridView>
设置了GroupName:作用在于让RadioButton在一个组里,产生互斥的效果,只能选中一个,但这样的效果却是能选中多个值,如图Radio1.jpg
也就是说RadioButton没有起到要的作用,没有互斥性,查看源代码,可以发现问题:
<input id="RadioCheck_ctl02_btnRadio" type="radio" name="RadioCheck$ctl02$ProductGroup" value="btnRadio" />
<input id="RadioCheck_ctl03_btnRadio" type="radio" name="RadioCheck$ctl03$ProductGroup" value="btnRadio" />
........
<input id="RadioCheck_ctl10_btnRadio" type="radio" name="RadioCheck$ctl10$ProductGroup" value="btnRadio" />,上面的RadioButton根本没有在一个组里面,GroupName也起不了作用。
解决方法:
1.移除RadioButton控件,换成Literal控件,ID为RadioButtonMarkup
2.为GridView的RowCreated事件创建事件,RowCreated事件如下:只要在GridView中新增一行数据,就触发RowCreated事件,不用RowDataBound事件的原因是:只有当数据明确绑定到控件中才引发RowDataBound事件。处理如下:在每一行记录中,编程引用Literal控件,然后在其Text属性里面声明代码,创建RadioButton,name值为ProductGroup,id为RowSelectX,X为index值,value值也为index值。
protected void Product_RowCreated(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
Literal output = e.Row.FindControl("RadioButtonMarkup") as Literal;
output.Text = string.Format(@"<input type="radio" name="ProductGroup"" " + @"id="RowSelector{0}"value="""value{0}",e.Row.RowIndex);
}
}
当然这是后台使用的方法.
还有一种就是用Javascript脚本事件
.aspx
<script type="text/javascript">
var last=null;
function judge(obj)
{
if(last==null)
{
last=obj.id;
}
else
{
var lo=document.getElementById(last);
lo.checked=false;
last=obj.name;
}
obj.checked="checked";
}
</script>
.cs 页面里在gridview的 RowDataBound 事件里
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
RadioButton rb = (RadioButton)e.Row.FindControl("rdoChoose");
if (rb != null)
{
rb.Attributes.Add("onclick", "judge(this)");
}
}
}
注意:如果你有RadioButton同时还有别的JS事件,请一定要追加上,否则就不能正确显示了.我比较偏爱JS这种方法,速度快,而且试过了放在UpdatePannel里也可以.没有过多的复杂测试.
GridView中的RadioButton列之间不能互斥相关推荐
- android listview 列宽度,WPF中用ListView时使GridView中的每列宽度按比例变化并使内容自适应单元宽度...
在使用ListView的时候,GridView中的每列宽度默认是没法按比例变化的,我们可以使用一个跟它同大小的Grid,给Grid设置相同数量的列,设置好每列的宽度,然后将其宽度绑定到GridView ...
- 使用JS实现将GridView中的TextBox列的值博给GridView外的一个文本筐
实现在GridView中的TextTextBox列中的Textbox每添加一值,在该TextBox失去焦点时, GridView外面的TextBox自动添加该GridView中Textbox列中的Te ...
- R语言epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、标准化系数、每当剔除某一条目后系数的变化、设置reverse参数不对任何数据对象进行反序
R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化
- R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、使用alpha函数和基于业务筛选的数据列的列表计算Cronbach‘s α
R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.使用alpha函数和基于业务筛选的数据列的列表计算Cronbach's α 目录
- R语言epiDisplay包alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、标准化系数、每剔除某一条目后系数的变化、var.labels.trunc参数指定字符串长度
R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化系数.每当剔除某一条目后系数的变化.使用var.l ...
- R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析、克朗巴哈系数、、每剔除某一条目后系数的变化、alphaBest函数获取最高alpha值对应的项目集
R语言使用epiDisplay包的alpha函数计算dataframe数据中指定数据列之间的信度分析.克朗巴哈系数(Cronbach's α).标准化系数.每当剔除某一条目后系数的变化.使用alpha ...
- GridView中BoundField类型列的改行方法
GridView中BoundField类型列的改行方法: <asp:BoundField HeadText="A<br/>B" HtmlEncode=" ...
- 解决无法获取 GridView 中BoundField 隐藏列值问题
本文转自http://hi.baidu.com/xujie2453/blog/item/53cb9f33c1312fa35fdf0e29.html 转载该文的目的就是让更多的网友看到该文,以免受此问题 ...
- GridView 中设置某列,截取字符串加... 和 鼠标放上去字符全部显示
使用模版列 <asp:TemplateField ><HeaderStyle Width="240px" /><HeaderTemplate>商 ...
最新文章
- 京东姚霆:推理能力,正是多模态技术未来亟需突破的瓶颈!
- jquery iframe 返回上一页_你不需要jQuery
- phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法
- 《netty实战》阅读笔记(2)——Netty 的数据容器ByteBuf
- Python之smtpd及smtplib(邮件服务器及客户端)
- IntelliJ IDEA 修改缓存文件设置
- 数据结构之 栈与队列(一)
- java 通过反射获取数组
- JDK帮助文档无法打开的常见问题和解决办法
- 读《VBScript程序员参考手册》,做的笔记
- 机器视觉硬件选型相关知识
- 【统信UOS】扫描仪设备管理驱动安装
- 工商管理硕士(MBA)提前面试案例与技巧
- 推动和规范编程教育纳入中小学相关课程加强师资建设(2020)
- ELK 收集中断错误处理
- 强大的GeoPandas,几行代码实现点转线功能
- s905l android5,魔百盒M101晶晨S905L处理器专用安卓纯净刷机rom固件
- 如何将电脑文件自动备份到u盘?
- Web Spider 常见混淆EVAL、AA、JJ、JSFUCK
- Linux 登陆 分辨率,Linux系统登陆前后 分辨率不一致的问题
热门文章
- 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 重写 MetaClass#invokeMethod 方法实现函数拦截 | 实现函数调用转发 )
- 【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )
- 【Flutter】Dart 数据类型 ( dynamic 数据类型 )
- 【计算理论】计算理论总结 ( 自动机设计 ) ★★
- linux 下mongo 基础配置
- python版本的策略模式
- python_selenium之第一个自动化脚本
- 初学jQuery之jQuery虚假购物车-------与真实数据无关
- result的type属性
- linux权限补充:rwt rwT rws rwS 特殊权限