protected void MyDataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Image Img = (Image)e.Item.Cells[0].FindControl("Zt");
            switch (DataBinder.Eval(e.Item.DataItem, "Zt").ToString())
            {
                case "1":
                    Img.ImageUrl = "../images/m56.gif";
                    Img.ToolTip = "已读";
                    break;
                case "2":
                    Img.ImageUrl = "../images/mail13.gif";
                    Img.ToolTip = "未读";
                    break;
            }          
        }
    }
我单击了一个页面文件上的按钮后,并没有引发DataGird事件,但为何还要报switch (DataBinder.Eval(e.Item.DataItem, "Zt").ToString())
出错。提示:未将对象引用设置到对象的实例。

解决方案 »

  1.   

    你的DataGrid没有new,或者DataBinder为空,或者e.Item为空。
    用对象之前,先判断对象是否有效,是写程序的一种好习惯。
    至于你点按钮时进行了什么操作,怎么引发的这个函数,就只有你自己知道了。
      

  2.   

    [C#] public static object Eval(object, string);所以switch (DataBinder.Eval(e.Item.DataItem, "Zt").ToString())时要想到
    ToString()之前,是不是有值...要是空的话就自然会报错...
    建议写一个defautl...