HttpHandler应用一例

本文介绍如何在DridView的每一行显示任务进度条,通过创建自定义HttpHandler来绘制并返回进度条图片,再结合ASP.NET GridView组件进行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:在DridView中的每一行显示任务进度条!
HttpHandler实现如下:

namespaceTHOA.Web.Utility
{
classHandlerTaskbar:IHttpHandler
{
IHttpHandler成员#regionIHttpHandler成员

publicboolIsReusable
{
get{returnfalse;}
}


publicvoidProcessRequest(HttpContextcontext)
{
Tasktask
=newTask();
ICtrlctrTask
=ICtrl.FactoryCreate(CtrType.CtrTask);
task.TaskID
=Convert.ToInt32(context.Request.QueryString["task_id"]);

Bitmapmap
=newBitmap(m_Width,m_Height);
Graphicsg
=Graphics.FromImage(map);

//--此处进度条绘图代码略

context.Response.Clear();
map.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);
//写回客户端输出流
g.Dispose();
map.Dispose();
context.Response.End();
}

}

}

请注意回写代码!

编译为dll,在Web app中引用生成的dll,假设名称为THOA.Web.Utility.dll,在web.config文件添加

<httpHandlers>
<addverb="GET"path="Taskbar.aspx"type="THOA.Web.Utility.HandlerTaskbar,THOA.Web.Utility"/>
</httpHandlers>

Web Form代码如下:
<asp:GridViewID="gvTask"runat="server">
<Columns>
<asp:TemplateFieldHeaderText="进度">
<HeaderStyleHorizontalAlign="center"Width="45px"/>
<ItemTemplate>
<asp:Imagerunat="server"ID="imgBar"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Web Form cs文件代码:

voidgridview_RowDataBound(objectsender,GridViewRowEventArgse)
{
ImageimgBar
=e.Row.FindControl("imgBar")asImage;
if(imgBar!=null)
imgBar.ImageUrl
="Taskbar.aspx?task_id="+e.Row.Cells[0].Text;
}

到此处大功告成,看看实际效果


另外,建议将出现频率高的进度缓存,以提高速度!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值