HttpHandler应用一例

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

namespace  THOA.Web.Utility
{
    
class HandlerTaskbar : IHttpHandler
    
{
    
#region IHttpHandler 成员

        
public bool IsReusable
        
{
            
get return false; }
        }


        
public void ProcessRequest(HttpContext context)
        
{
            Task task 
= new Task();
            ICtrl ctrTask 
= ICtrl.FactoryCreate(CtrType.CtrTask);
            task.TaskID 
= Convert.ToInt32(context.Request.QueryString["task_id"]);

            Bitmap map 
= new Bitmap(m_Width, m_Height);
            Graphics g 
= 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 >
        
< add verb = " GET "  path = " Taskbar.aspx "  type = " THOA.Web.Utility.HandlerTaskbar,THOA.Web.Utility "   />
    
</ httpHandlers >

Web Form代码如下:
< asp:GridView ID = " gvTask "  runat = " server " >
        
< Columns >
            
< asp:TemplateField HeaderText = " 进度 " >
            
< HeaderStyle HorizontalAlign = " center "  Width = " 45px " />
            
< ItemTemplate >
                
< asp:Image runat = " server "  ID = " imgBar "   />
            
</ ItemTemplate >
            
</ asp:TemplateField >
        
</ Columns >
    
</ asp:GridView >

Web Form cs文件代码:

void  gridview_RowDataBound( object  sender, GridViewRowEventArgs e)
{
    Image imgBar 
= e.Row.FindControl("imgBar"as Image;
    
if (imgBar != null)
            imgBar.ImageUrl 
= "Taskbar.aspx?task_id=" + e.Row.Cells[0].Text;
}

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


另外,建议将出现频率高的进度缓存,以提高速度!  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值