-
您的位置:首页 → 精文荟萃 → 软件资讯 → 结合ashx来在DataGrid中显示从数据库中读出的图片
结合ashx来在DataGrid中显示从数据库中读出的图片
时间:2004/10/7 19:12:00来源:本站整理作者:蓝点我要评论(0)
-
有关ashx后缀名的文件请看 消除图片在ie中缓存而无法更新的问题 相关文章
从数据库中读取和保存图片请看 写入和读取图片(c# asp。net sqlserver) 相关文章
下面利用ashx文件可以方便实现从数据库中读取图片并显示在datagrid当中
//---------------------------------------BindImage.aspx ----------------------------------------
<%@ Page language="c#" Codebehind="BindImage.aspx.cs" AutoEventWireup="false" Inherits="ShowImage.BindImg" %>
BindImg
//------------------------------------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处理句柄的标签,并在查询字符串中包含唯一标识图片所在的记录的信息。之后,HTTP处理句柄使用ADO.NET来获取图象数据位,并使用GDI+(图象设备接口+)来构建图象。
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3
最新文章
微信3.6.0测试版更新了微信支付漏洞会造成哪
360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗
人气排行
xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本
查看所有0条评论>>