Handler.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
//using System;
//using System.Web;
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.OleDb;
public class Handler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
//获取雇员ID。
string id = context.Request.QueryString["id"];
//这里可以使用我在上一个例子中读图片的文件的例子来代替。
//altimageData的作用是数据库中不存在照片数据的时候可以
//显示这个默认的图片。我在这里就用它来代替了。没有实际作用。
byte[] altimageData = new byte[1];
byte[] imageData = altimageData;
// string strdatapath = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnStr"].ConnectionString;
using (OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnStr"].ConnectionString))
{
string s3 = "select img from t_dic_zutai_elem where id='" + id + "'";
OleDbCommand comm = new OleDbCommand(s3, conn);
// OleDbParameter parm = comm.Parameters.Add("@id", OleDbType.VarChar);
// parm.Value = id;
conn.Open();
using (OleDbDataReader rdr = comm.ExecuteReader(CommandBehavior.CloseConnection))
// OleDbDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
{
if (rdr.Read())
//为了防止你读的数据是空的而做的。如果没有图片就使用替代图片来代替。
// imageData = (rdr[0] == System.DBNull.Value) ? altimageData : (byte[])rdr[0];
{
Byte[] image = (Byte[])rdr["img"];
MemoryStream ms = new MemoryStream(image, 0, image.Length);
if (ms != null)
{
//取得图像MemoryStream大小
int bufferSize = (int)ms.Length;
//建立 buffer
byte[] buffer = new byte[bufferSize];
//调用MemoryStream.Read,自MemoryStream 读取至buffer,并返回count
int countSize = ms.Read(buffer, 0, bufferSize);
//返回图像buffer
context.Response.OutputStream.Write(buffer, 0, countSize);
}
}
}
}
//写入图片信息到输出流中。
// context.Response.OutputStream.Write(imageData, 78, imageData.Length - 78);
}
public bool IsReusable {
get {
return false;
}
}
}
listitem.aspx
<asp:GridView ID="gvRole" runat="server" AutoGenerateColumns="False" Width="100%" OnRowDataBound="gvRole_RowDataBound" AllowPaging="True" OnPageIndexChanging="gvRole_PageIndexChanging" PageSize="15" OnRowDeleting="gvRole_RowDeleting" >
<Columns>
<asp:TemplateField HeaderText="编号" >
<ItemTemplate>
<asp:HyperLink ID="nameLnk" runat="server" Text='<%# Bind("id") %>'>
</asp:HyperLink>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="15%" BorderWidth="1px" />
<ControlStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="名称">
<ItemTemplate >
<asp:HyperLink ID="Label_name" runat="server" Text='<%# Bind("name") %>'>
</asp:HyperLink>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="15%" BorderWidth="1px" />
<ControlStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="图片">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("id", "Handler.ashx?id={0}") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="编辑" >
<ItemTemplate>
<asp:HyperLink ID="LinkButton_update" runat="server"
Text="编辑"></asp:HyperLink>
</ItemTemplate>
<ItemStyle BorderWidth="1px" HorizontalAlign="Center" Width="15%" />
<ControlStyle Width="30px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="删除" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton_del" runat="server" CausesValidation="False" CommandName="Delete"
Text="删除"></asp:LinkButton>
</ItemTemplate>
<ItemStyle BorderWidth="1px" HorizontalAlign="Center" Width="15%" />
<ControlStyle Width="30px" />
</asp:TemplateField>
</Columns>
<PagerTemplate>
<table>
<tr>
<td style="text-align: right"> 第<asp:Label ID="lblPageIndex" runat="server" Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1 %>"></asp:Label>页
共<asp:Label ID="lblPageCount" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageCount %>"></asp:Label>页
<asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="首页"></asp:LinkButton>
<asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev"
CommandName="Page" Text="上一页"></asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next"
CommandName="Page" Text="下一页"></asp:LinkButton>
<asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last"
CommandName="Page" Text="尾页"></asp:LinkButton>
<asp:TextBox ID="txtNewPageIndex" runat="server" Text="<%# ((GridView)Container.Parent.Parent).PageIndex + 1%>" Width="20px"></asp:TextBox>
<asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO"></asp:LinkButton>
</td>
</tr>
</table>
</PagerTemplate>
</asp:GridView>