如何在ASP.NET GridView中获取动态创建的复选框值的值

时间:2019-01-23 10:54:24

标签: c# asp.net gridview checkbox

我正在像这样在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的实例的值为空

3 个答案:

答案 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);