参照
aspx file
    <asp:TemplateColumn HeaderText="照片">
      <ItemTemplate>
        <asp:Image Runat=server ID="Image1"
         ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>' />
      </ItemTemplate>
    </asp:TemplateColumn>aspx.cs file
  protected string FormatURL(object strArgument)
  {
   return "ReadImage.aspx?id=" + strArgument.ToString();
  }
ReadImage.aspx<%@ Page language="c#" Codebehind="ReadImage.aspx.cs" AutoEventWireup="false"
 Inherits="eMeng.Exam.DataGridShowImage.ReadImage" %>ReadImage.aspx.csusing System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Data.SqlClient;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace eMeng.Exam.DataGridShowImage
{
  /// <summary>
  /// ReadImage 的摘要说明。
  /// </summary>
  public class ReadImage : System.Web.UI.Page
  {
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   string strImageID = Request.QueryString["id"];
   SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;");
   SqlCommand myCommand = new SqlCommand("Select PersonImageType, PersonImage from Person Where PersonID=" 
    + strImageID, myConnection);   try
   {
    myConnection.Open();
    SqlDataReader myDataReader;
    myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    if(myDataReader.Read())
    {
     Response.Clear();     Response.ContentType = myDataReader["PersonImageType"].ToString();
     Response.BinaryWrite((byte[])myDataReader["PersonImage"]);
    }
    myConnection.Close();
   }
   catch (SqlException SQLexc)
   {
   }
   Response.End();
  }
    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
      //
      // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
      //
      InitializeComponent();
      base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
      this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
  }
}

解决方案 »

  1.   

    未将对象引用设置到对象的实例
    --------------------------------
    就是说你在image2=(System.Web.UI.WebControls.Image)e.Item.FindControl("image3");            //相片
    时并没有找到这个控件,如果是为了绑定的话其实在前台来写是比较简单的
      

  2.   

    我是用DataGrid绑定的,那怎样在前台来绑定呢?
      

  3.   

    像 wangsaokui(无间道II(前传)) 的例子那样
        <asp:TemplateColumn HeaderText="照片">
          <ItemTemplate>
            <asp:Image Runat=server ID="Image1"
             ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "相片")) %>' />
          </ItemTemplate>
        </asp:TemplateColumn>其中"相片"这个字段是你绑定到datagrid的数据源的字段名