作者:木子 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
{
/// <summary>
/// BindImg 的摘要说明。
/// </summary>
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);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
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
{
/// <summary>
/// GetImg 的摘要说明。
/// </summary>
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+(图象设备接口+)来构建图象。
分享到:
相关推荐
在IT领域,尤其是在Web开发中,结合ASHX处理程序与DataGrid控件来显示数据库中的图片是一项常见且实用的技术。本文将深入解析如何利用ASHX技术在DataGrid中展示存储于数据库中的图像数据,以及其背后的实现原理。 #...
网络上找了好久没找到简单易上手的.net版本的easyui datagrid ashx 结合的.net例子,自己个人实现,后台虚拟json数据,不包含数据库操作,实现了datagrid的增删改,100%可运行(VS2012开发)
【标题】"ajax+ashx+分页 包含数据库文件"所涉及的知识点主要集中在Web开发中的异步数据处理和页面动态加载技术上。这里的"ajax"是"Asynchronous JavaScript and XML"的缩写,是一种在不刷新整个网页的情况下,能够...
### 使用Gridview绑定数据库中的图片 #### 背景与目的 在Web应用程序开发中,尤其是在ASP.NET项目中,经常...此外,通过将图片数据存储在数据库中,可以方便地进行备份和恢复操作,这对于保证数据的安全性非常重要。
本文将详细介绍如何将存储在数据库中的二进制图片数据绑定到DataList,以便在网页上进行展示。我们将使用Visual Studio 2010作为开发工具,SQL Server 2008作为数据库管理系统。 首先,我们需要了解如何在数据库中...
在这个"HTML+ASHX上传传图片"的示例中,我们将探讨如何结合这两种技术实现图片的上传功能。 1. **HTML表单**: HTML用于创建用户界面,其中`<form>`元素是用于文件上传的关键。你需要设置`<input type="file">`...
最强图片上传示例 可多次多选择可删除可预览 jQuery+Ashx 异步上传 史上最强图片上传示例。jQuery+Ashx异步上传,有源代码。 每次可选择多张图片,可多次选择,可预览,上传前可删除已选择的任意图片。 任何时候仅...
在Web开发中,图片上传是一项常见的功能,而Ajax技术与ASHX(HTTP Handler)结合可以实现异步无刷新的图片上传,并且支持回显显示已上传的图片。下面将详细介绍这个"ajax+ashx完整上传图片示例,可回显"的实现方式。 ...
标题与描述概述的知识点主要涉及了C#编程语言在处理图像数据存储于SQL ...以上技术点的综合应用,实现了C#中图片在SQL Server数据库中的高效存取,不仅提升了数据管理的灵活性,也增强了Web应用的交互性和用户体验。
在数据库中创建一个包含图片信息的表,至少需要三个字段:`ImageID`(主键)、`ImageName`(图片名)和`Image`(图片二进制数据)。这一步是基础,确保图片的数据能够被正确地存储。 **2. 设计Web界面** 使用...
在IT领域,尤其是在Web开发中,将图片以二进制流的形式存储在数据库中是一种常见的做法,这在处理大量图像数据或需要高效访问时尤其有用。本示例以Visual Studio 2005 (VS2005) 和 SQL Server 2005 (SQL2005) 为开发...
本文将深入探讨如何使用jQuery库结合C#的ASHX处理程序实现图片的无刷新上传,并生成缩略图。首先,我们需要理解Ajax的核心原理,它是Asynchronous JavaScript and XML(异步JavaScript和XML)的缩写,但现在更多地与...
一种常见的做法是将图片以二进制形式存储在数据库中,这种方式可以方便地与业务数据进行关联,并简化了图片的管理。 #### 技术栈 - **ASP.NET**: 微软提供的一套基于.NET框架的服务器端Web应用框架。 - **C#**: ...
在 Img.ashx 文件中,我们需要实现 IHttpHandler 接口,重写 ProcessRequest 方法来处理图片请求。以下是一个简单的示例代码: ```csharp using System; using System.Web; public class Img : IHttpHandler ...
在这个实例中,我们将探讨如何使用datagrid来创建一个能够与后台数据库进行交互的Web页面。 首先,我们看到有`.ashx`文件,这代表“HTTP处理程序”(HTTP Handler),是ASP.NET中的一个轻量级组件,用于处理特定...
在.NET开发环境中,ASP.NET Web API或传统的ASP.NET应用程序经常使用ASHX(HTTP Handler)来处理特定的HTTP请求。这些处理程序通常用于提供轻量级的API服务或者执行某些特定的任务。在标题提及的场景中,“在ashx中...
在.NET 中,ashx 文件可以继承 IHttpHandler 接口来处理请求。ashx 文件可以使用 session,但需要使用特殊的方法来获取 session 值。在 ashx 文件中,session 的获取方法与 aspx 文件不同,需要使用 HttpContext....
在.NET开发中,ASHX(Generic Handler)是一种轻量级的HTTP处理器,常用于处理一些简单的请求,如图片处理、数据交互等。标题提到的"ashx添加水印效果不改变原图片"是指通过ASHX处理器为图片动态添加水印,而不会...
在这个例子中,我们看到`ProcessRequest`方法设置了响应的内容类型为JPEG图片,然后从一个假设的`GetImageStream`方法中获取图片流,最后将其写入到HTTP响应中。 ### ashx文件的应用场景 ashx文件可以应用于多种...
在C#中,我们通过创建一个继承自`System.Web.IHttpHandler`接口的类来定义我们的ASHX处理器。这个类通常包含两个方法:`IsReusable`和`ProcessRequest`。`IsReusable`用于判断处理器实例是否可重用,而`...