日期:2014-05-17  浏览次数:20690 次

未将对象引用设置到对象的实例??如何解决??
在版主后台管理信息中,想要提供版主修改推荐信息的功能,就是版主可以修改哪条信息是推荐信息,哪条信息是非推荐信息,在gridview中,用一个checkbox控件绑定是否为推荐,推荐用打勾,非推荐为不打勾。版主可以进行修改。在CheckBox1_CheckedChanged点击事件中,老是提醒说“未将对象引用设置到对象的实例”的错误。我现在把代码发给各位高手看下,看能不能帮我解决。很急啊,老师就要检查了,要做一点后台管理给老师看看,我好交差啊。。谢谢。。。
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chk = sender as CheckBox;
        GridViewRow row = chk.NamingContainer as GridViewRow;
        string sqlconstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conn = new SqlConnection(sqlconstr);
        conn.Open();
        string if_recommend = "0";
        CheckBox CheckBox1 = (CheckBox)(row.FindControl("CheckBox1"));
        if (CheckBox1.Checked == true)
        {
            if_recommend = "1";
        }
        string sqlstr = "update [Message] set if_recommend='" + if_recommend + "'";
        sqlstr += " where Mid='" + gvNewsList.DataKeys[row.RowIndex].Value.ToString() + "'";
        SqlCommand cmd = new SqlCommand(sqlstr, conn);
        cmd.ExecuteNonQuery();
        gvNewsList.EditIndex = -1;
        conn.Close();
        bindgrid();
    }

小妹我在这里谢谢大家了。。。 

------解决方案--------------------
不会调试?这种问题是最简单的。gvNewsList.DataKeys[row.RowIndex]看看这个是不是null 或者gvNewsList.DataKeys[row.RowIndex].Value 是不是null,或者CheckBox1这个是不是null
------解决方案--------------------
把异常信息也贴上来,好准确定位问题
通常是某对象未正确实例化或未找到
例如:
CheckBox CheckBox1 = (CheckBox)(row.FindControl("CheckBox1")); //如果CheckBox未找到,CheckBox1 为 null
        if (CheckBox1.Checked == true)  //这行就会报错,因为CheckBox1为null,不会存在Checked属性
        {
            if_recommend = "1";
        }
------解决方案--------------------

CheckBox CheckBox1 = (CheckBox)(row.FindControl("CheckBox1"));
加一个单元格试试
CheckBox CheckBox1 = (CheckBox)(row.cell[CheckBox1所在的单元格索引].FindControl("CheckBox1"));

CheckBox1是不是又放到单元格中其它容器控件中了?
row.FindControl("CheckBox1")没找到"CheckBox1。
------解决方案--------------------
当得到的值是空值null的时候会报未将对象引用到实例
------解决方案--------------------

引用: