当前位置: 首页 > 编程日记 > 正文

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

作者:木子  http://blog.csdn.net/derny/

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

//---------------------------------------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>

<%@ Page language="c#" Codebehind="BindImage.aspx.cs" AutoEventWireup="false" Inherits="ShowImage.BindImage" %>

//------------------------------------BindImage.aspx.cs ---------------------------------------------

P>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();
    }
   }
  }
  #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
 }
}

//-----------------------------GetImage.ashx ---------------------------------------

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


//--------------------------------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+(图象设备接口+)来构建图象。

相关文章:

如何度过二十多岁这段又穷又迷茫的岁月?

我们在后台常常会收到读者的留言我马上毕业了&#xff0c;但是现在很迷茫&#xff0c;不知道学校里学的&#xff0c;能不能真正的适应工作...我工作两三年&#xff0c;还是不知道怎么规划自己的技术成长路线&#xff0c;不知道该学什么来提升自己的竞争力...人生需要长线的经营…

Qt 自定义信号与槽

注 对象与槽理解 //第一个参数lineEdit是激发事件对象,信号中的方法必须在对象中存在&#xff0c;并在对象类头文件signals下定义&#xff0c;//第二个参数信号&#xff0c;//第三个参数this是槽方法所属类的对象&#xff0c;且必须在对象类的头文件的slots下定义//第四个参数槽…

php解析ip列表并入库

前一段时间因为要开发一个新项目&#xff0c;需要一个ip库&#xff0c;由于公司原本无这样一个库&#xff0c;所以急需从文件中匹配ip地址然后存库。下面是我下的一段程序&#xff0c;可能效率不是很高&#xff0c;代码也没有做过多的优化&#xff0c;有些地方比较繁琐&#xf…

AI 领域新突破,腾讯发布首个AI药物研发平台「云深智药」

7月9日&#xff0c;2020世界人工智能大会云端峰会开幕。会上&#xff0c;腾讯首席运营官任宇昕公布了用AI助力药物研发领域的最新进展——由腾讯自主研发的首个AI驱动的药物发现平台“云深智药&#xff08;iDrug&#xff09;”正式对外发布。云深智药平台的推出&#xff0c;将帮…

写入和读取图片(c# asp.net sqlserver)

作者&#xff1a;木子 http://blog.csdn.net/derny/首先要创建一个表包含自段image 和 type 类型各自为image 和 vnanchar WebForm1.aspx <% Page language"c#" Codebehind"WebForm1.aspx.cs" AutoEventWireup"false" Inherits"ReadA…

【MyBatis学习01】宏观上把握MyBatis框架

今天开始学习mybatis框架&#xff0c;博客主要记录学习过程中的一些总结&#xff0c;如有错误之处&#xff0c;欢迎留言指正~先用mybatis的鸟鸟来镇个楼&#xff0c;咳咳~~ mybatis框架是一个持久层框架&#xff0c;是Apache下的顶级项目。mybatis可以让开发者的主要精力放在s…

消除图片在ie中缓存而无法更新的问题

程序中图片是动态显示的 原先把打算把图片保存在服务器端然后显示 可是由于ie的缓存问题导致图片无法实时更新显示 所以改为把图片存在session中然后再显示 需要保存的时候再保存到本地 //&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&…

Linux shell笔记

由于工作的需要&#xff0c;越来越多的接触到linux系统。最近看了《Linux与Unix Shell》这本书&#xff0c;安装书的章节整理了一些自己认为比较重要的命令&#xff0c;方便以后查阅。 No.001 文件安全与权限 1. umask 决定了新建文件的权限 2. 软链接(符号链接) ln -s source_…

ACL最佳论文提出最新NLP模型测试方法,最佳论文提名也不可小觑

译者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;近日&#xff0c;ACL 2020公布了最佳论文奖&#xff0c;另有两篇最佳论文荣誉提名奖也各自提出了解决NLP领域问题的创新方法。最佳论文&#xff1a;Beyond Accuracy: Behavioral Testing o…

LVM逻辑卷的缩减与删除,LVM逻辑卷快照,btrfs文件系统,网络管理

逻辑卷缩减缩减的时候要注意缩减的空间不要超过文件系统的空间&#xff0c;不然缩减的时候会损坏文件系统。第一步要先取消挂载&#xff08;必须&#xff09;第二部检查文件完整性&#xff08;必须&#xff09;e2fsck -f /dev/vg0/lv0第三部文件系统缩减&#xff0c;先缩减文件…

屏掉F5刷新的办法

<body οnkeydοwn"KeyDown()"> function KeyDown(){ //屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl R if ((event.keyCode116)||(event.ctrlKey && event.keyCode82)) { event.keyCode0; event.returnValuefalse; } }

WAIC汇聚全球顶级科学家,畅谈人工智能的未来挑战与突破

7月9日&#xff0c;2020世界人工智能大会&#xff08;WAIC&#xff09;正式拉开帷幕。当天下午&#xff0c;2020世界人工智能大会科学前沿全体会议召开&#xff0c;作为今年WAIC唯一一场聚焦前沿科技的大会&#xff0c;邀请了世界范围内最顶级的AI专家探讨技术趋势。其中&#…

ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff1a;ant执行命令的详细参数 -buildfile<file>,-file<file>,-f<file> :要指定执行构件的的位置和名称。 -find<file>,-s<file>: 查找构件文件&#xff0c;并执行找到的构件文件。…

mipi和dsi

转自&#xff1a; http://blog.csdn.net/longxiaowu/article/details/24410021 一、MIPI MIPI&#xff08;移动行业处理器接口&#xff09;是Mobile Industry Processor Interface的缩写。MIPI&#xff08;移动行业处理器接口&#xff09;是MIPI联盟发起的为移动应用处理器制定…

在asp.net中调用Office来制作各种(3D)统计图

作者&#xff1a;未知 由于本文网上多处见到 对于谁是作者 无法肯定1、下载owc11 COM组件 http://www.microsoft.com/downloads/details.aspx?FamilyID7287252c-402e-4f72-97a5-e0fd290d4b76&displaylangen 2、注册owc11 在工程中添加 C:/Program Files/Common File…

个人谈谈seo

为什么80%的码农都做不了架构师&#xff1f;>>> 我不知道大家有没有做过seo的工作。以前我是一各技术人员。纯技术开发或技术管理人员。基本上也没有接触过seo的相关工作&#xff0c;整天在写代码或看别人的代码 。干了六年只见他们都在谈友情链接。做推广&#xf…

“编程能力差的程序员,90%输在这事上!”谷歌AI专家:都是瞎努力!

Google 人工智能开发者专家彭靖田老师说——超90%的程序员在初学Python 人工智能时&#xff0c;都会遇到下面3个问题&#xff1a;1.想学人工智能&#xff0c;但不知从何学起&#xff0c;也不知道该选择什么方向...2.Python语法、机器学习/深度学习框架、算法都能看懂&#xff0…

[译]JavaScript中,{}+{}等于多少?

最近,Gary Bernhardt在一个简短的演讲视频“Wat”中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得出的. 在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串…

大数量查询分页显示

微软的解决办法 using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Windows.Forms; public class PagingSample: Form { // Form controls. Button prevBtn new Button(); Button nextBtn new Button(); static DataGrid …

Sep 26 09:22:41 ck01 kernel: Buffer I/O error on device sda2, logical block 2

错误 kernel: sd 0:2:0:0: SCSI error: return code kernel: end_request: I/O error, dev sda, sector 2308509 kernel: Buffer I/O error on device sda2, logical block 2 kernel: Buffer I/O error on device sda2, logical block 2 硬盘扇区问题&#xff1f; 更换一块硬盘…

启信宝CEO陈青山:AI+大数据驱动下的金融新生态

人工智能怎样潜移默化影响金融业务&#xff1f;合合信息联合创始人、启信宝CEO陈青山在2020世界人工智能大会云端峰会.未来金融论坛上做了“AI大数据&#xff0c;共创金融新生态”的主题演讲&#xff0c;讲述了如何通过数字化构建一个虚拟世界&#xff0c;协助金融类企业建立新…

新手安装ruby on rails(ror)的成功必备手册

2019独角兽企业重金招聘Python工程师标准>>> 如何快速正确的安装 Ruby, Rails 运行环境 每一位使用windows系统来进行ROR开发项目的都是这个世界上折翼的天使。对于新入门的开发者&#xff0c;如何在windows系统上安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是…

Logback学习笔记1

Logback介绍 Logback 分为三个模块&#xff1a;Core、Classic 和 Access。Core模块是其他两个模块的基础。 Classic模块扩展了core模块。 Classic模块相当于log4j的显著改进版。Logback-classic 直接实现了 SLF4J API。 要引入logback&#xff0c;由于Logback-classic依赖slf4j…

微软亚洲研究院副院长刘铁岩:AI如何助力节能减排?

7月10日&#xff0c;在微软举办的WAIC●2020人工智能予力永续未来论坛&#xff0c;微软亚洲研究院副院长刘铁岩围绕 AI 在节能减排领域的应用&#xff0c;探讨了如何推进整个社会的可持续发展。 刘铁岩指出&#xff0c;人工智能在助力节能环保方面具有巨大潜力。例如&#xff…

如何在域控制器上安装asp.net?

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/在域控制器或备份域控制器上安装 Microsoft Visual Studio .NET 或 Microsoft .NET 框架后&#xff0c;如果您尝试运行 ASP.NET 应用程序&#xff0c;则浏览器…

前端思想实现:面向UI编程_____前端框架设计开发

引子&#xff0c;我去小说看多了&#xff0c;写博客竟然写引子了&#xff01;&#xff01;&#xff01;不过&#xff0c;没引子不知道怎么写了。言归正传吧&#xff0c;前端这个职业&#xff0c;也就这几年刚刚火起来的职业&#xff0c;以前那个混乱的年代&#xff0c;前端要么…

如何检查当TextBox设置为多行时是不是超长了?

<asp:RegularExpressionValidator id"revTextBox1" runat"server" ForeColor"Red" Display"Dynamic" ControlToValidate"textBox1" ValidationExpression"(/w|/W){1,100}">格式错误-只能输入不超过100个字符…

仅用2年过渡到自研ARM芯片,苹果的底气从何而来?

作者 | Steven Sinofsky译者 | 弯月&#xff0c;责编 | 屠敏题图 | 东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;今年 WWDC 2020 上&#xff0c;苹果宣布自研 ARM 芯片——Apple Silicon&#xff0c;对于苹果而言&#xff0c;Apple Silicon很重要&#…

从“创业输家”到“创智赢家”

年轻就是创业的资本&#xff0c;但同时还要不怕失败&#xff0c;经得起挫折&#xff01;”在上海财经大学的演讲厅内&#xff0c;彭震以自己亲身的经历&#xff0c;向在场的学生们介绍了自己创业背后的艰辛。彭震&#xff0c;现任项丰投资公司董事长&#xff0c;作为首届“ 创智…

2.正则表达式

在计算机科学中&#xff0c;正则表达式是这样解释的&#xff1a;它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里&#xff0c;正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用…