实现GridView 里的进度条


 在一些项目管理系统里经常要用一个进度条去动态显示当前项目进展情况,那如何在GridView里实现进度条呢?首先要有一个百分比(如根据当前的情况和原先计划的工期计算一个项目完成的百分比),然后根据这个百分比去画一个进度条。
 这里要用到.ashx文件,代码如下:
  1. <%@ WebHandler Language="C#" Class="ChartHandler" %>
  2. using System;
  3. using System.Web;
  4. using System.Drawing;
  5. using System.Drawing.Drawing2D;
  6. using System.Drawing.Imaging;
  7. public class ChartHandler : IHttpHandler {
  8.     
  9.     public void ProcessRequest (HttpContext context) {
  10.   //这个是接收传过来的百分比
  11.         decimal rateofprogress = decimal.Parse(context.Request.QueryString["rateofprogress"]);
  12.         using (Bitmap bitmap = new Bitmap(100, 16))
  13.         {
  14.             using (Graphics graphics = Graphics.FromImage(bitmap))
  15.             {
  16.                 graphics.SmoothingMode = SmoothingMode.AntiAlias;
  17.                 graphics.Clear(Color.White);
  18.                 Rectangle rect = new Rectangle(0, 0, 100, 16);
  19.                 graphics.DrawRectangle(Pens.Black, rect);
  20.                 int width = Convert.ToInt32(rateofprogress);
  21.                                 
  22.                 Rectangle fillRect = new Rectangle(0, 0, width, 16);
  23.                 if (width == 100)
  24.                 {
  25.                     graphics.FillRectangle(Brushes.Green, fillRect);//如果百分比为一百,进度条用绿色显示,表示已完成
  26.                 }
  27.                 else if(width==0)
  28.                 {
  29.                     graphics.Clear(Color.Gray);
  30.                     graphics.FillRectangle(Brushes.Gray, fillRect);//百分比为0,进度条用灰色显示,表示未开始
  31.                 }
  32.                 else
  33.                 {
  34.                     graphics.FillRectangle(Brushes.Blue, fillRect);//正在进行的,用蓝色显示
  35.                 }
  36.                 context.Response.ContentType = "text/gif";
  37.                 context.Response.Clear();
  38.                 context.Response.BufferOutput = true;
  39.                 bitmap.Save(context.Response.OutputStream, ImageFormat.Gif);
  40.             }
  41.         } 
  42.     }
  43.  //下面是必须要的
  44.     public bool IsReusable {
  45.         get {
  46.             return false;
  47.         }
  48.     }
  49. }
  50.  下面是.aspx中的代码:
  51. <asp:TemplateField HeaderText="完成进度">
  52.                 <ItemTemplate>                    
  53.                     <img alt='<%# "按原计划已完成:"+Convert.ToDecimal(Eval("RateOfProgressVc")).ToString("F2")+"%"  %>' 
  54.                         src='<%# "ChartHandler.ashx?rateofprogress="+Eval("RateOfProgressVc") %>' />
  55.                 </ItemTemplate>
  56. </asp:TemplateField>
  57.             
  58.             
  59.           数据库中最好是有一个字段用来存放计算出来的百分比,然后Eval("")直接取这个值传过去。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值