System.NullReferenceException: 未将对象引用设置到对象的实例。


Posted on October 26, 2007


VisualStudio2005(c#)项目调试问题解决方案:System.NullReferenceException: 未将对象引用设置到对象的实例。

原因:

(1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用datagrid或gridview或datalist等数据控件时出现.

(2)控件名称与codebehind里面的没有对应

(3)未用new初始化对象

(4)在程序中所引用的控件不存在

解决方法:
(1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值

(2)查看代码中是否存在未初始化的变量

以上是通用的解决的方案,而我遇到的问题是第一个情况,问题出现是使用GridView的编辑Command里面,在GridView1_RowDataBound事件里面,出现问题:未将对象引用设置到对象的实例。原来使用编辑Command时,页面也是回传,加一个!IsPostBack就OK了!

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow && !IsPostBack)//不加IsPostBack则会出错!
        {
            Label l = new Label();
            l = (Label)(e.Row.Cells[2].FindControl("Label_content"));
            if (l.Text.Length > 20)
            {
                l.Text = l.Text.Substring(0, 20);
            }
            else l.Text = l.Text;
            HyperLink hl = new HyperLink();
            hl = (HyperLink)(e.Row.Cells[5].FindControl("HyperLink1"));
            if (hl.NavigateUrl.ToString() == "http://")
            {
                hl.NavigateUrl = null;
            }
            HyperLink hl2 = new HyperLink();
            hl2 = (HyperLink)(e.Row.Cells[6].FindControl("HyperLink2"));
            if (hl2.NavigateUrl.IndexOf('@') == -1)
            {
                hl2.NavigateUrl = null;
            }
        }
    }


标签:N/A

 

在线学习答案查询入口
微信扫码联系
微信扫码联系