GridView里面嵌套RadioButton
很多时候需要在GridView里面嵌套一些其它的控件,比如说单选按钮,复选按钮,文本框等等,这个事儿也不难,以前做过很多次也没遇见什么问题,但是最近却遇到了一件令我非常苦恼的事情,我在GridView里面嵌套了一个RadioButton,我的目的是想让用户选择一个对象对其操作,起初是这个RadioButton无法单选,给它指定了GroupName之后也是一样的问题,后来这个解决了,代码如下:
protected void rdbCheck_CheckedChanged(object sender, EventArgs e) { for (int i = 0; i < this.dgvUserGrouopList.Rows.Count; i++) { ((RadioButton)this.dgvUserGrouopList.Rows[i].FindControl("rdbCheck")).Checked = false; } ((RadioButton)sender).Checked = true; //foreach (GridViewRow row in this.dgvUserGrouopList.Rows) //{ // if (row.RowType == DataControlRowType.DataRow) // { // RadioButton rb = (RadioButton)row.FindControl("rdbCheck"); // rb.Checked = false; // } //} //RadioButton btn = sender as RadioButton; //btn.Checked = true; //foreach (GridViewRow row in this.dgvUserGrouopList.Rows) //{ // if (row.RowType == DataControlRowType.DataRow) // { // RadioButton rb = (RadioButton)row.FindControl("rdbCheck"); // if (rb.Checked) // { // SelectGrouopID = row.Cells[3].Text.Trim();//给全局变量赋值 // } // } //} }
以上两种方法都可以达到效果,但是第一种明显要简洁一些,单选没问题了,随之而来的便是不管怎么样都无法获取GridView上面的数据,如下图:
选中数据之后,点击“修改”按钮,进入代码里面:
可以看到,获取不到GridView上面的数据了,我以为是RadioButton的问题,所以换成了CheckBox,可以搞了半天一样的问题,后来我看了看前台的代码,发现有个问题,不知道当时为什么给GridView绑定字段的时候都是使用的TemplateFeld,并不是BoundField,会不会是这个原因呢?于是将TemplateFeld换成了BoundField,果然,问题得到解决,如下图:
图片中那几个“增加”,“删除”,“修改”,“保存”按钮的图片是在FrankTang的博客中截图的,当时觉得这几个图片挺实用的,就截图保存了下来,在此表示感谢。
http://www.cnblogs.com/FrankTang/archive/2012/10/30/2746081.html
作者:Allen Chen无影
邮箱:allen0717@163.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.