关于GridView中添加checkbox的选中事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于GridView中添加checkbox的选中事件相关的知识,希望对你有一定的参考价值。

首先我在GridView-智能标记-添加列-checkbox-(智能标记)编辑列-选中checkbox列-转换为摸板-(智能标记)编辑摸板-双击CheckBox1控件-调出CheckBox1_CheckedChanged事件,然后我准备在其中写CheckBox1选中后触发的事件if(CheckBox1.checked==true)......,问题就出现了,我发现我不能调出控件CheckBox1的ID名,就是我写CheckBox1的时候没这个控件名,就是程序默认为没有CheckBox1这个控件,我在摸板外面拖CheckBox控件的时候都能调用其CheckBox2或CheckBox3的控件名,但就是在摸板里面的时候出不来,请高手们指点下这是怎么回事,我该怎么解决啊!谢谢了!
BS模式
我在GridView外面拖了一个CheckBox2,然后点击他的CheckBox2_CheckedChanged事件,我在CheckBox2_CheckedChanged里面写的时候怎么可以调用出CheckBox2控件名呢!而在GridView摸板里面就调不出来,如果在 CheckBox1_CheckedChanged 在这个事件下写代码,就不需要判断的话,那么CheckBox2_CheckedChanged也应该调不出CheckBox2控件名了,还有在 protected void CheckBox2_CheckedChanged(object sender, EventArgs e)

if (CheckBox2.Checked == true)
Response.Write("sss");
运行成功,结果也是我想要的!难道在GridView中的判断选中就不是这么写了么??为什么摸板里外会出现这样情况呢?你说的那种方法我还没试,如果程序能运行成功当然好,但这个现象我还是很想搞明白的!
3楼的大哥!我看我同学用vb.net写的跟你差不多,不过我用C#就不会了,我怎么调不出GridView1的Rows属性啊!

if(CheckBox1.checked==true)?
你已经在 CheckBox1_CheckedChanged 在这个事件下写代码了,就不需要判断CheckBox1.checked 是否等于True了选中了就会执行该代码.. 这是其一。【至于你想判断是选中的哪一行就必须在Gridview行绑定的时候给CheckBox1付值如代码1】
其二:找Gridview中的控件是ASP.NET的基本功 你得好好学。
举个例子:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

GridViewRow gr = e.Row;
if (e.Row.RowType == DataControlRowType.DataRow)

//绑定数据行
GridView _Fist_GridView_Message = (GridView)gr.FindControl("Gr_Message_First"); //第一列详细信息


if (e.Row.RowType == DataControlRowType.Header)

//绑定标题行
GridView _Fist_GridView_Tiltle = (GridView)e.Row.Cells[0].Controls[1];


if (e.Row.RowType == DataControlRowType.Footer)

//绑定脚注行
Label Lb_Second = (Label)e.Row.Cells[0].FindControl("Lb_Score_Average_Second"); //第一列脚注


代码1:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

if (e.Row.RowType == DataControlRowType.DataRow) //确定绑定类型

GridViewRow gr = e.Row;
CheckBox cbox = (CheckBox )gr.FindControl("CheckBox1"); //当Gridview绑定一行就会找一行,那么就可以给每一行中的CheckBox绑定一个索引,或者GridView行中的数据
//比如:
cbox.Text = "xxx";

参考技术A if (CheckBox1.Checked == true)

改为

if(((CheckBox)sender).Checked)

具体代码
:

//如果全选的CheckBox被选中的话,循环GridView找到第三列所有的checkbox名为"cb"的控件使它都选中
int i;
if(((CheckBox)sender).Checked)

for(i=0;i<GridView1.Rows.Count;i++)

((CheckBox)GridView1.Rows[i].FindControl("cb")).Checked=true;


else

for(i=0;i<GridView1.Rows.Count;i++)

((CheckBox)GridView1.Rows[i].FindControl("cb")).Checked=false;

本回答被提问者采纳
参考技术B (CheckBox)this.GridView1.Rows[行].Cells[控件位置].FindControl("你的cherkbox控件名")).Checked == true 参考技术C 我的意见和上面两位大侠的意见一致!
不过就是慢了点!我就不发了!

告一段落~谢谢~
参考技术D CS还是BS啊?

在android app中的gridview里面这么添加checkbox?

现在我有一个gridview,众有3个纵队(column)。现在我在想加一纵队,这个一队只想添加checkbox。

我的代码很像这个例子http://www.tutorialspoint.com/android/android_grid_view.htm.

如果有谁知道这么做的,请告诉我。

谢谢你们的帮助。
http://www.tutorialspoint.com/android/android_grid_view.htm

打错了。

不好意思了!

两种办法:
1。使用循环把适配数据中的position%3 == 0 && position != 0的地方都加一个临时数据,
在adapter中getView遇到临时数据的地方都显示checkbox,注意处理最后一个数据。
2。使用ListView取代GridView追问

1. 为什么要position != 0的条件?循环是在那里用?

2. 您说“注意处理最后一个数据”。请您在仔细说明一下吗?

我是Android开发新手。我的中文也不太好。最好可以帮我用代码解释吗?

谢谢您的帮助。

追答

1.for(position= 0; position< adapter.getCount(); position++)
...


2.最后一条数据的位置肯能如下
—— —— —— 口
—— 口
这是中间有两个空的数据需要填充啊。

追问

“在adapter中getView遇到临时数据的地方都显示checkbox”
这样知道你遇到了这个数据?
这块代码加在getView那里? 要用循环吗?

谢谢您的帮助。

参考技术A 你说的那个例子网址失效了噢!看不到效果追问

我打错了网站。
是http://www.tutorialspoint.com/android/android_grid_view.htm

不好意思了。

以上是关于关于GridView中添加checkbox的选中事件的主要内容,如果未能解决你的问题,请参考以下文章

DEV带筛选行CheckBox选中问题

gridview获取checkbox的选中行

WPF:选中/取消选中位于gridview单元格模板中的复选框的所有复选框?

在gridview里设置checkbox多选

Gridview中checkbox选择绑定字段时为啥是不可编辑的

自定义View之GridView单选 金额选择Layout-ChooseMoneyLayout