gridview复选框问题asp.net

时间:2011-08-19 07:06:09

标签: c# asp.net visual-studio-2010 gridview findcontrol

我正在尝试在gridview中实现一个复选框,

此复选框的作用是验证记录,

按下此验证按钮后,所有带复选复选框的项目都会输入到数据库中

这是我的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {

        foreach (GridViewRow row in GridView1.Rows)
        {

             CheckBox cbox = ((CheckBox)row.FindControl("Verify"));

            if (cbox.Equals(true))
            {
                String DraftsText = ((TextBox)row.FindControl("numDrafts")).Text;
                String TCtext = ((TextBox)row.FindControl("numTC")).Text;

                if (row.RowType == DataControlRowType.DataRow)
                {
                    //Header trs = new Header();
                    // GridView1.Rows[0].FindControl("numTC");
                    if (TCtext != "" && DraftsText != "")
                    {

                        //  try
                        //  {
                        string date = row.Cells[4].Text;

                        DateTime dateTime = Convert.ToDateTime(date);
                        string dateFormatted = dateTime.ToString("d-MMM-yy");

                        string unit = row.Cells[5].Text;
                        string currency = row.Cells[6].Text;
                        string totalFC = row.Cells[7].Text;
                        string totalDC = row.Cells[8].Text;
                        int d = Convert.ToInt32(DraftsText);
                        int tc = Convert.ToInt32(TCtext);


                        hdr = new Header(d, tc, dateFormatted, unit, currency, totalFC, totalDC);
                        hdr.InsertFCTC(hdr);
                    }

                }

            }
        }
    }

我可能会以错误的方式去,但是在if(cbox.Equals(true)) 它给了我一个例外:对象引用未设置为对象的实例。

知道我能做些什么来解决这个问题吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

if (cbox.Equals(true))应为if (cbox.Checked)

由于您的cbox is a checkbox object无法用于比较,因此您必须使用cbox Checked属性,该属性将返回true/false

答案 1 :(得分:1)

您收到NullPointerException,因为找不到建议的复选框!或者直接强制转换为CheckBox类型的实例并不能按预期工作。

答案 2 :(得分:1)

将您的代码更改为类似的内容并重试:

CheckBox cbox = ((CheckBox)row.FindControl("Verify"));

            if (cbox != null && cbox.Checked)
            {
....
}