如何在gridview中显示sql表中的图像?

时间:2015-05-21 05:14:40

标签: c# asp.net .net

嗨我试图将图像从sql表显示到gridview但是它没有显示这是我的代码将gridview与sql表记录绑定.....

当用户登录时,用户登录照片应显示我正在尝试的内容 图像已存储在数据库中,但有一个ISSUE可以将图像从数据库中检索到gridview

PostBookChat.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lblsession.Text = "Welcome" + Convert.ToString(Session["UName"]);
        sessionimage();

    }
}

private void sessionimage()
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ConnectionString);
    try
    {
        int EmpID = (int)Session["EmpID"];
        SqlDataAdapter Adp = new SqlDataAdapter("select  EmpID,Photo from TBL_PBLogin where EmpID='" + EmpID + "'", con);
        DataTable Dt = new DataTable();
        con.Open();
        Adp.Fill(Dt);
        gridviewphoto.DataSource = Dt;
        gridviewphoto.DataBind();
        con.Close();
    }
    catch (Exception ex)
    {
        throw new Exception(ex.ToString());
    }
}

PostBookChat.aspx

 <body>
    <form id="form1" runat="server">
       <div>
          <div id="header">
             <img src="Image/book.png" height="60" width="140" style ="margin-left:0px;float:left;"/>
                 <div id="login">
                     <b><asp:Label ID="lblsession" runat="server" ForeColor="white" CssClass="label"></asp:Label>
                            <asp:GridView ID="gridviewphoto" runat="server" AutoGenerateColumns="false" BackColor="#CC3300" ForeColor="Black" ShowHeader="false" GridLines="None">
                               <Columns>
                                   <asp:TemplateField ControlStyle-Width="100" ControlStyle-Height="100">

                                       <ItemTemplate>
                                            <asp:Image ID="Image" runat="server" ImageUrl='<%# "~/Handler.ashx?id=" + Eval("EmpID") %>' />
                                       </ItemTemplate>

                                   </asp:TemplateField>
                               </Columns>
                        </asp:GridView>
                   <asp:Button ID="btnlogout" runat="server" Text="Sign Out" CssClass="myButton" OnClick="btnlogout_Click"/>
              </div>
           </div>
       </body>

Handler.ashx

public class Handler : IHttpHandler
{
  public void ProcessRequest(HttpContext context)
  {
    if (context.Request.QueryString["EmpID"] == null) return;
    string connStr = ConfigurationManager.AppSettings["connect"].ToString();
    string pictureId = context.Request.QueryString["EmpID"];
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT Photo FROm TBL_PBLogin WHERE EmpID = @EmpId", conn))
        {
            cmd.Parameters.Add(new SqlParameter("@EmpID", pictureId));
            conn.Open();
            using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                reader.Read();
                context.Response.ContentType = "image/png";
                context.Response.BinaryWrite((Byte[])reader[reader.GetOrdinal("Photo")]);
                reader.Close();
            }
        }
    }
}

数据库

        EmpID (PK,int notnull) (1,1)
        UName(varchar(255),notnull)
        Password(varchar(255),notnull)
        Photo(image,null)

0 个答案:

没有答案