作者woodwood (科科)
看板C_Sharp
标题[问题] 抓不到GridView里的checkbox?
时间Tue Sep 29 22:36:41 2009
我参考圣殿祭司的.net3.5专家技术手册I里面的
动态建立 TemplateField 样板栏位写了一支程式
在Gridview里动态生成checkbox,在Gridview的footer产生一个Button
在按下Button引发的 RowCommand 事件里抓出已选取的checkbox
现在的问题是RowCommand假如写成
CheckBox chk;
foreach (GridViewRow rowItem in GridView1.Rows)
{
if (rowItem.RowType == DataControlRowType.DataRow)
{
chk = (CheckBox)(rowItem.Cells[0].FindControl("cbox"));
if (chk.Checked)
{
}
}
}
就会引发 Object reference not set to an instance of an object. Error
如果写成
CheckBox chk;
foreach (GridViewRow rowItem in GridView1.Rows)
{
if (rowItem.RowType == DataControlRowType.DataRow)
{
chk = (CheckBox)(rowItem.Cells[0].Controls[0]);
}
}
就会引发Specified argument was out of the range of valid values.
Parameter name: index
看起来像是没抓到CheckBox,难不成CheckBox根本不在那个NamingContainer里@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.165.170.34
1F:→ kinwind:rowItem.FindControl("cbox") 呢? 09/29 22:53
2F:→ woodwood:一样不行阿 09/29 23:27
3F:推 petrushka:我猜你的CheckBox在该时点并未再次产生,所以找不到 09/30 00:08
4F:→ petrushka:你应该再RowCommand事件之前要再rebind 09/30 00:09
5F:→ petrushka:这是常见的动态产生Controls的问题 09/30 00:11
6F:→ casearchu:你在RowCommand前是否做了DataBind...检查一下Page_Load 10/02 14:22
7F:→ casearchu:里面有没有设定Postback时 不要再重新Databind GridView 10/02 14:22