如何读取二进制图片-Gridview中显示二进制图片 --2

 Handler.ashx

 

<%@ WebHandler Language="C#" Class="Handler" %>

//using System;
//using System.Web;


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.IO;
using System.Data.OleDb;
public class Handler : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {
       
        //获取雇员ID。
        string id = context.Request.QueryString["id"];
        //这里可以使用我在上一个例子中读图片的文件的例子来代替。
        //altimageData的作用是数据库中不存在照片数据的时候可以
        //显示这个默认的图片。我在这里就用它来代替了。没有实际作用。
        byte[] altimageData = new byte[1];
        byte[] imageData = altimageData;
        // string strdatapath = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnStr"].ConnectionString;
        using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnStr"].ConnectionString))
        {
            string s3 = "select img from t_dic_zutai_elem  where id='" + id + "'";
            OleDbCommand comm = new OleDbCommand(s3, conn);
           // OleDbParameter parm = comm.Parameters.Add("@id", OleDbType.VarChar);
          //  parm.Value = id;
            conn.Open();
            using (OleDbDataReader rdr = comm.ExecuteReader(CommandBehavior.CloseConnection))
          //  OleDbDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
            {
                if (rdr.Read())
                //为了防止你读的数据是空的而做的。如果没有图片就使用替代图片来代替。
                //    imageData = (rdr[0] == System.DBNull.Value) ? altimageData : (byte[])rdr[0];
                {
                    Byte[] image = (Byte[])rdr["img"];
                    MemoryStream ms = new MemoryStream(image, 0, image.Length);
                    if (ms != null)
                    {
                        //取得图像MemoryStream大小
                        int bufferSize = (int)ms.Length;
                        //建立 buffer
                        byte[] buffer = new byte[bufferSize];
                        //调用MemoryStream.Read,自MemoryStream 读取至buffer,并返回count
                        int countSize = ms.Read(buffer, 0, bufferSize);
                        //返回图像buffer
                        context.Response.OutputStream.Write(buffer, 0, countSize);
                    }
                }
            }

        }
        //写入图片信息到输出流中。
       // context.Response.OutputStream.Write(imageData, 78, imageData.Length - 78);

 

    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

 

 

listitem.aspx

 

 

 

  <asp:GridView ID="gvRole" runat="server" AutoGenerateColumns="False" Width="100%"  OnRowDataBound="gvRole_RowDataBound" AllowPaging="True" OnPageIndexChanging="gvRole_PageIndexChanging" PageSize="15" OnRowDeleting="gvRole_RowDeleting" >
                        <Columns>
                         
                     <asp:TemplateField HeaderText="编号" >
                          <ItemTemplate>
                            
                             <asp:HyperLink ID="nameLnk" runat="server" Text='<%# Bind("id") %>'>
                                         
                                      </asp:HyperLink>
                          </ItemTemplate>
                          <ItemStyle HorizontalAlign="Center" Width="15%"  BorderWidth="1px" />
                              <ControlStyle Width="100px" />
                       </asp:TemplateField>
                      
                            <asp:TemplateField HeaderText="名称">
                                <ItemTemplate >
                                 <asp:HyperLink ID="Label_name" runat="server" Text='<%# Bind("name") %>'>
                            
                                 </asp:HyperLink>
                              </ItemTemplate>
                              <ItemStyle HorizontalAlign="Center" Width="15%"  BorderWidth="1px" />
                              <ControlStyle Width="100px" />
                            </asp:TemplateField>
                     

                            <asp:TemplateField HeaderText="图片">

                                <ItemTemplate>

                                    <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("id", "Handler.ashx?id={0}") %>'/>

 
                                </ItemTemplate>

                            </asp:TemplateField>


                           <asp:TemplateField HeaderText="编辑" >
                              <ItemTemplate>                      
                                <asp:HyperLink ID="LinkButton_update" runat="server"
                                 Text="编辑"></asp:HyperLink>
                              </ItemTemplate>
                            <ItemStyle BorderWidth="1px" HorizontalAlign="Center" Width="15%" />
                            <ControlStyle Width="30px" />
                          </asp:TemplateField> 
                           <asp:TemplateField HeaderText="删除" >
                              <ItemTemplate>                      
                                <asp:LinkButton ID="LinkButton_del" runat="server" CausesValidation="False" CommandName="Delete"
                                 Text="删除"></asp:LinkButton>
                              </ItemTemplate>
                            <ItemStyle BorderWidth="1px" HorizontalAlign="Center" Width="15%" />
                            <ControlStyle Width="30px" />
                          </asp:TemplateField>
                        </Columns>
                         <PagerTemplate>
                                  <table>
                                    <tr>
                                      <td style="text-align: right"> 第<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>"></asp:Label>页
                                       共<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>"></asp:Label>页
                                       <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="首页"></asp:LinkButton>
                                      <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev"
                                      CommandName="Page" Text="上一页"></asp:LinkButton>
                                       <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next"
                                        CommandName="Page" Text="下一页"></asp:LinkButton>
                                         <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last"
                                        CommandName="Page" Text="尾页"></asp:LinkButton>
                                      <asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="20px"></asp:TextBox>
                                      <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO"></asp:LinkButton>
                                     </td>
                                  </tr>
                                </table>
                            </PagerTemplate>
                    </asp:GridView>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值