zoukankan      html  css  js  c++  java
  • 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();
        }

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

  • 相关阅读:
    SpringBoot入门(一)——开箱即用
    四六级成绩查询,你的『验证码』刷出来了吗?
    Kubernetes 在网易云中的落地优化实践
    漫画:深入浅出 ES 模块
    两分钟了解Docker的优势
    浅析Kubernetes的工作原理
    常用数据清洗方法大盘点
    移动端推广APP防作弊机制之依我见
    十一、观察者模式(Observable、Observer)
    paip.最新的c++ qt5.1.1环境搭建跟hello world
  • 原文地址:https://www.cnblogs.com/chenghu/p/8144799.html
Copyright © 2011-2022 走看看