作者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