下面利用ashx文件可以方便实现从数据库中读取图片并显示在datagrid当中
1.BindImage.aspx

<%@ Page language="c#" Codebehind="BindImage.aspx.cs" AutoEventWireup="false" Inherits="ShowImage.BindImg" %>
<HTML>
 <HEAD>
  <title>BindImg</title>
 </HEAD>
 <body>
  <form id="Form1" method="post" runat="server">
   <FONT face="宋体">
    <asp:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="False" Width="632px">
     <AlternatingItemStyle BackColor="Beige"></AlternatingItemStyle>
     <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
     <Columns>
      <asp:TemplateColumn HeaderText="Photo">
       <ItemTemplate>
        <img src='<%# "GetImage.ashx?ID="+DataBinder.Eval(Container.DataItem,"EmployeeID")%>'>
       </ItemTemplate>
      </asp:TemplateColumn>
      <asp:BoundColumn DataField="LastName" HeaderText="Last Name"></asp:BoundColumn>
      <asp:BoundColumn DataField="FirstName" HeaderText="First Name"></asp:BoundColumn>
      <asp:BoundColumn DataField="title" HeaderText="Title"></asp:BoundColumn>
     </Columns>
    </asp:DataGrid></FONT>
  </form>
 </body>
</HTML>

2.BindImage.aspx.cs

using System;
using System.Data;
using System.Drawing;
using System.Web; using System.Data.SqlClient; 

namespace ShowImage
{
 /**//// 
 /// BindImg 的摘要说明。
 /// 
 public class BindImage: System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DataGrid MyDataGrid;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!Page.IsPostBack)
   {
    SqlConnection conn = new SqlConnection(@"Server=shoutor\mydb;database=northwind;uid=sa;Pwd=shoutor");
    try
    {
     conn.Open();
     SqlCommand cmd = new SqlCommand("select employeeID,lastname,firstname,title from employees",conn);
     SqlDataReader reader = cmd.ExecuteReader();
     MyDataGrid.DataSource = reader;
     MyDataGrid.DataBind();
    }
    finally
    {
     conn.Close();
    }
   }
  }
  Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /**//// 
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// 
  private void InitializeComponent()
  {    
   this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
 }
}

3.GetImage.ashx

<%@ WebHandler Language="C#" Class="ShowImage.GetImage" CodeBehind="GetImage.ashx.cs" %>

4.GetImage.ashx.cs

using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO; 

namespace ShowImage
{
 /**//// 
 /// GetImg 的摘要说明。
 /// 
 public class GetImage : IHttpHandler
 {
  public void ProcessRequest(HttpContext context)
  {
   string id = (string)context.Request["id"];
   if(id!=null)
   {
    MemoryStream stream = new MemoryStream();
    SqlConnection conn = new SqlConnection(@"Server=;database=;uid=;Pwd=");
    Bitmap bm = null;
    Image image = null;
    try
    {
     conn.Open();
     SqlCommand cmd = new SqlCommand("select photo from employees where employeeid='"+id+"'",conn);
     byte[] blob = (byte[])cmd.ExecuteScalar();
     stream.Write (blob,78,blob.Length-78);
     bm = new Bitmap(stream);

     int width=48;
     int height = (int)(width*((double)bm.Height/(double)bm.Width));


     // GetThumbnailImage生成缩略图
     image = bm.GetThumbnailImage(width,height,null,IntPtr.Zero);

     context.Response.ContentType = "image/jpeg";

     image.Save(context.Response.OutputStream,ImageFormat.Jpeg);
    }
    finally
    {
     if(image!=null)
      image.Dispose();
     if(bm!=null)
      bm.Dispose();
     stream.Close();
     conn.Close();
    }
   }
  }
  
  public bool IsReusable
  {
   get
   {
    return true;
   }
  }  
 }
}

ProcessRequest使用了空架类库的易用的Image.GetThumbnailImage方法来把位图缩小到宽度为48像素,同时保持图象的长宽比。可以使用类似的技术来创建显示来自其他数据库图象的DataGrid。基本的思想是使用模板列来输出一个引用某个HTTP处理句柄的<img>标签,并在查询字符串中包含唯一标识图片所在的记录的信息。之后,HTTP处理句柄使用ADO.NET来获取图象数据位,并使用GDI+(图象设备接口+)来构建图象。

来自:http://www.zahui.com/html/4/7991.htm

转载于:https://www.cnblogs.com/Hedonister/archive/2006/03/16/351086.html

【转】结合ashx来在DataGrid中显示从数据库中读出的图片相关推荐

  1. 结合ashx来在DataGrid中显示从数据库中读出的图片

    作者:木子  http://blog.csdn.net/derny/ 下面利用ashx文件可以方便实现从数据库中读取图片并显示在datagrid当中 //----------------------- ...

  2. qsql 关联_QTableView与QSqlTableModel显示mysql数据库中的数据,怎么在QTableView的项中添加chekbox按钮与上拉列表啊真心求指导...

    QTableView与QSqlTableModel显示mysql数据库中的数据,如何在QTableView的项中添加chekbox按钮与下拉列表啊?真心求指导. 各位大侠好,利用QTableView与 ...

  3. echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...

    关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...

  4. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  5. eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...

    ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...

  6. python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  7. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  8. 关于TD标签中如何使用数据库中拿到的数据进行赋值判断

    ######关于 TD中如何使用数据库中拿到的数据进行赋值判断** 今天本人 在写项目过程中碰见了一个问题, 数据库中有一个值的判断 1:开发 2:未开发 3:开发失败 我需要从数据库中拿到值 然后循 ...

  9. linux中显示进程,linux中怎么显示所有进程

    Linuxlinux中显示所有进程下使用PS命令结合相关参数可以查看linux当前系统下的所有进程.那么linux中怎么显示所有进程呢?接下来大家跟着学习啦小编一起来了解一下的解决方法吧. linux ...

最新文章

  1. vue升级之路(三)-- vue-router的使用
  2. Ubuntu18.04安装Scala
  3. java redirect 跨域_碰到了跨域问题, Redirect is not allowed for a preflight request
  4. HDU5670Machine(抽象进制)
  5. request.get... getHeader 能取得的信息 参数
  6. R语言是如何增强数据科学
  7. HDU-4255 A Famous Grid BFS
  8. Linux之less命令
  9. CRNN+CTC (基于CTPN 的end-to-end OCR)
  10. 华为新系统鸿蒙效果,19款华为手机内测新系统,流畅度比肩苹果iOS,优先体验鸿蒙OS...
  11. UKIEPC 2017
  12. JSP标准标签购物车项目
  13. 合作博弈:联盟、分配和核心core
  14. 机械工程专业英语词汇
  15. [转]关于PSP的3.52 M33-2自制系统七大热点问题
  16. 06 Halcon 点云平面度测量
  17. 中国与印度软件开发之比较
  18. 学会这10种定时任务,我有点飘了
  19. 转:vue+canvas如何实现b站萌系登录界面
  20. 沈阳市房地产市场信息系统数据容灾与异地备份

热门文章

  1. 查找算法常见的五大面试知识点与两类实战!
  2. 脱口秀演员入职华为?破案了:人家还是博士后研究员
  3. 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
  4. 损失函数理解汇总,结合PyTorch1.7和TensorFlow2
  5. 5行代码,快速实现图像分割,代码逐行详解,手把手教你处理图像 | 开源
  6. 开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
  7. 他24岁,4篇Nature在手,也会关心学不懂C语言怎么办
  8. 史上最全排序算法总结!建议收藏
  9. 我生于1997,我骄傲了吗?
  10. 【每日一算法】二叉搜索树结点最小距离