我正在像这样在asp.net gridview中动态添加复选框控件:
CheckBox cb1 = new CheckBox();
cb1.Text = row.Cells[3].Text;
row.Cells[3].Controls.Add(cb1);
我想访问是否在按钮单击事件中选中了该复选框...
在按钮上单击,我已经尝试过此操作:
foreach (GridViewRow item in grdreport.Rows)
{
if (item.RowType == DataControlRowType.DataRow)
{
CheckBox checkbox1 = (CheckBox)item.FindControl("cb1");
// cb1.Checked = true;
if (checkbox1.Checked)
{
}
}
}
但是它给了我一个错误:
未将对象引用设置为对象cb1的实例的值为空
答案 0 :(得分:0)
foreach (GridViewRow row in grdreport.Rows)
{
CheckBox checkbox1= (row.Cells[3].FindControl("cb1") as CheckBox);
if (checkbox1.Checked)
{
}
}
需要通过特定行和单元格访问复选框
答案 1 :(得分:0)
关注此行:
CheckBox checkbox1 = (CheckBox)item.FindControl("cb1");
首先检查item.FindControl("cb1")
是否为您提供任何价值。更多信息-Object Reference Exception
答案 2 :(得分:0)
当在RowDataBound()期间将复选框或任何对象动态添加到Gridview时,并且如果应在单击按钮时检索该动态对象的值,请在RowDataBound()期间为该对象启用视图状态,它的工作原理就像一个超级按钮。
CheckBox cb1 = new CheckBox();
cb1.Text = row.Cells[3].Text;
**cb1.EnableViewState = true;**
row.Cells[3].Controls.Add(cb1);