• ASP.NET实现进度条效果【转】


     原文地址:http://www.jb51.net/article/115310.htm

    这篇文章主要为大家详细介绍了ASP.NET实现简单的进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    我们先看下进度条效果

    我点击了按钮后他会显示进度页面,进度完成后,进度条消失,其实也是比较简单的了。

    我们需要一个进度条代码文件ProgressBar.htm(注意:是没有head这些标签的)

    <script language="javascript">
      function SetPorgressBar(pos) {
        //设置进度条居中
     
        var screenWidth = document.body.offsetWidth;
        ProgressBarSide.style.width = Math.round(screenWidth / 2) + "px";
        ProgressBarSide.style.left = Math.round(screenWidth / 4) + "px";
        ProgressBarSide.style.top = "50px";
        ProgressBarSide.style.height = "21px";
        ProgressBarSide.style.display = "block";
     
        //设置进度条百分比 
        ProgressBar.style.width = pos + "%";
        ProgressText.innerHTML = pos + "%";
      }
     
      function SetMaxValue(maxValue) {
        ProgressBarSide.style.width = maxValue + "px";
      }
     
      //完成后隐藏进度条
      function SetCompleted() {
        ProgressBarSide.style.display = "none";
      }
     
      function SetTitle(title) {
        ProgressTitle.innerHTML = title;
      }
    </script>
    <div id="ProgressBarSide" style="position: absolute; height: 21px;  100px;
      color: Silver; border- 1px; border-style: Solid; display: block">
      <div id="ProgressBar" style="position: absolute; height: 21px;  0%; background-color: #1475BB">
      </div>
      <div id="ProgressText" style="position: absolute; height: 21px;  100%; text-align: center">
      </div>
      <div id="ProgressTitle" style="position: absolute; height: 21px; top: 21px;  100%;
        text-align: center">
      </div>
    </div>
    

      

    然后需要一个进度条类ProgressBar.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.IO;
     
    namespace ZhuoYueE.Dop.Web.UI
    {
      /// <summary>
      ///显示进度条
      /// </summary>
      public class ProgressBar : System.Web.UI.Page
      {
        /// <summary>
        /// 最大值
        /// </summary>
        private int MaxValue
        {
          get
          {
            if (ViewState["MaxValue"] == null)
            {
              return 0;
            }
            else
            {
              return Convert.ToInt32(ViewState["MaxValue"]);
            }
          }
          set
          {
            ViewState["MaxValue"] = value;
          }
        }
        /// <summary>
        /// 当前值
        /// </summary>
        private int ThisValue
        {
          get
          {
            if (ViewState["ThisValue"] == null)
            {
              return 0;
            }
            else
            {
              return Convert.ToInt32(ViewState["ThisValue"]);
            }
          }
          set
          {
            ViewState["ThisValue"] = value;
          }
        }
        /// <summary>
        /// 当前页面
        /// </summary>
        System.Web.UI.Page m_page;
        /// <summary>
        /// 功能描述:构造函数
        /// 作  者:huangzh
        /// 创建日期:2016-05-06 11:54:34
        /// 任务编号:
        /// </summary>
        /// <param name="page">当前页面</param>
        public ProgressBar(System.Web.UI.Page page)
        {
          m_page = page;
        }
     
        public void SetMaxValue(int intMaxValue)
        {
          MaxValue = intMaxValue;
        }
     
        /// <summary>
        /// 功能描述:初始化进度条
        /// 作  者:huangzh
        /// 创建日期:2016-05-06 11:55:26
        /// 任务编号:
        /// </summary>
        public void InitProgress()
        {
          //根据ProgressBar.htm显示进度条界面
          string templateFileName = AppDomain.CurrentDomain.BaseDirectory + "ProgressBar.htm";
          StreamReader reader = new StreamReader(@templateFileName, System.Text.Encoding.GetEncoding("GB2312"));
          string strhtml = reader.ReadToEnd();
          reader.Close();
          m_page.Response.Write(strhtml);
          m_page.Response.Flush();
        }
     
        /// <summary>
        /// 功能描述:设置标题
        /// 作  者:huangzh
        /// 创建日期:2016-05-06 11:55:36
        /// 任务编号:
        /// </summary>
        /// <param name="strTitle">strTitle</param>
        public void SetTitle(string strTitle)
        {
          string strjsBlock = "<script>SetTitle('" + strTitle + "'); </script>";
     
          m_page.Response.Write(strjsBlock);
          m_page.Response.Flush();
        }
     
        /// <summary>
        /// 功能描述:设置进度
        /// 作  者:huangzh
        /// 创建日期:2016-05-06 11:55:45
        /// 任务编号:
        /// </summary>
        /// <param name="percent">percent</param>
        public void AddProgress(int intpercent)
        {
          ThisValue = ThisValue + intpercent;
          double dblstep = ((double)ThisValue / (double)MaxValue) * 100;
     
          string strjsBlock = "<script>SetPorgressBar('" + dblstep.ToString("0.00") + "'); </script>";
     
          m_page.Response.Write(strjsBlock);
          m_page.Response.Flush();
        }
     
     
        public void DisponseProgress()
        {
          string strjsBlock = "<script>SetCompleted();</script>";
          m_page.Response.Write(strjsBlock);
          m_page.Response.Flush();
        }
      }
    }

    然后就是调用方法了,调用很简单,在页面的按钮事件或者其他什么地方加入代码,如在按钮事件里这么用

    protected void btnImport_Click(object sender, EventArgs e)
        {
          ProgressBar pb = new ProgressBar(this);
          pb.SetMaxValue(110);
          pb.InitProgress();
          pb.SetTitle("这是一个测试数据");
          for (int i = 1; i <= 110; i++)
          {
            pb.AddProgress(1);
            //此处用线程休眠代替实际的操作,如加载数据等
            System.Threading.Thread.Sleep(50);
          }
          pb.DisponseProgress();
        }

    怎么样,是不是很简单呢。

  • 相关阅读:
    PPTP服务器的端口
    Linux ln命令
    Git 学习笔记回到过去版本
    Iptables中SNAT和MASQUERADE的区别
    转移虚拟机后ubuntu network available SIOCSIFADDR: No such device
    用iptables做IP的静态映射
    软件项目管理
    需求工程
    软件工程——理论、方法与实践 之 软件实现
    软件工程——理论、方法与实践 之 软件工程中的形式化方法
  • 原文地址:https://www.cnblogs.com/chenghu/p/8144799.html
Copyright © 2020-2023  润新知