【转】结合ashx来在DataGrid中显示从数据库中读出的图片
1.BindImage.aspx
<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.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
4.GetImage.ashx.cs
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中显示从数据库中读出的图片相关推荐
- 结合ashx来在DataGrid中显示从数据库中读出的图片
作者:木子 http://blog.csdn.net/derny/ 下面利用ashx文件可以方便实现从数据库中读取图片并显示在datagrid当中 //----------------------- ...
- qsql 关联_QTableView与QSqlTableModel显示mysql数据库中的数据,怎么在QTableView的项中添加chekbox按钮与上拉列表啊真心求指导...
QTableView与QSqlTableModel显示mysql数据库中的数据,如何在QTableView的项中添加chekbox按钮与下拉列表啊?真心求指导. 各位大侠好,利用QTableView与 ...
- echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...
关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...
- mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...
如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...
- eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...
ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...
- python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式
尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...
- python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式
尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...
- 关于TD标签中如何使用数据库中拿到的数据进行赋值判断
######关于 TD中如何使用数据库中拿到的数据进行赋值判断** 今天本人 在写项目过程中碰见了一个问题, 数据库中有一个值的判断 1:开发 2:未开发 3:开发失败 我需要从数据库中拿到值 然后循 ...
- linux中显示进程,linux中怎么显示所有进程
Linuxlinux中显示所有进程下使用PS命令结合相关参数可以查看linux当前系统下的所有进程.那么linux中怎么显示所有进程呢?接下来大家跟着学习啦小编一起来了解一下的解决方法吧. linux ...
最新文章
- vue升级之路(三)-- vue-router的使用
- Ubuntu18.04安装Scala
- java redirect 跨域_碰到了跨域问题, Redirect is not allowed for a preflight request
- HDU5670Machine(抽象进制)
- request.get... getHeader 能取得的信息 参数
- R语言是如何增强数据科学
- HDU-4255 A Famous Grid BFS
- Linux之less命令
- CRNN+CTC (基于CTPN 的end-to-end OCR)
- 华为新系统鸿蒙效果,19款华为手机内测新系统,流畅度比肩苹果iOS,优先体验鸿蒙OS...
- UKIEPC 2017
- JSP标准标签购物车项目
- 合作博弈:联盟、分配和核心core
- 机械工程专业英语词汇
- [转]关于PSP的3.52 M33-2自制系统七大热点问题
- 06 Halcon 点云平面度测量
- 中国与印度软件开发之比较
- 学会这10种定时任务,我有点飘了
- 转:vue+canvas如何实现b站萌系登录界面
- 沈阳市房地产市场信息系统数据容灾与异地备份
热门文章
- 查找算法常见的五大面试知识点与两类实战!
- 脱口秀演员入职华为?破案了:人家还是博士后研究员
- 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
- 损失函数理解汇总,结合PyTorch1.7和TensorFlow2
- 5行代码,快速实现图像分割,代码逐行详解,手把手教你处理图像 | 开源
- 开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
- 他24岁,4篇Nature在手,也会关心学不懂C语言怎么办
- 史上最全排序算法总结!建议收藏
- 我生于1997,我骄傲了吗?
- 【每日一算法】二叉搜索树结点最小距离