ASP.NET for循环进度条
网上那些进度条 都是在新页面 或者覆盖页面产生的,给大家一个思路,那我们使用框架,然后把进度条调用就可以了
代码依旧是用 网上那些的,但是你要新建一个ASPX的页面来存放你的for循环:
新建的 neironghtml.aspx ASPX页面 添加后台代码 空白地方 放这3个:
private void beginProgress()
{
//根据ProgressBar.htm显示进度条界面
string templateFileName = System.IO.Path.Combine(Server.MapPath("."), "ProgressBar.htm");
System.IO.StreamReader reader = new System.IO.StreamReader(@templateFileName, System.Text.Encoding.GetEncoding("GB2312"));
string html = reader.ReadToEnd();
reader.Close();
Response.Write(html);
Response.Flush();
}
private void setProgress(int percent)
{
string jsBlock = "
Response.Write(jsBlock);
Response.Flush();
}
private void finishProgress()
{
string jsBlock = " ";
Response.Write(jsBlock);
Response.Flush();
}
protected void Page_Load(object sender, EventArgs e)
{
beginProgress();
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sql"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select * from 文章列表", con);
SqlDataReader sdr = cmd.ExecuteReader();
for (int i = 0; i <= 100; i++)
{
if (sdr.Read())
{
////////////////
double a = Convert.ToDouble(5000); /// 比如有5000条记录
double b = Convert.ToDouble(i);
double d = b / a * 100;
int bbb = Convert.ToInt32(d);
setProgress(bbb);
///////////////////
string url = "http://www.baidu.com/news.aspx?=" + sdr["id"].ToString();
string Html = string.Empty;//初始化新的webRequst
HttpWebRequest Request1 = (HttpWebRequest)WebRequest.Create(url);
Request1.KeepAlive = true;
Request1.ProtocolVersion = HttpVersion.Version11;
Request1.Method = "GET";
Request1.Accept = "*/* ";
Request1.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5";
Request1.Referer = url;
HttpWebResponse htmlResponse = (HttpWebResponse)Request1.GetResponse();
//从Internet资源返回数据流
Stream htmlStream = htmlResponse.GetResponseStream();
//读取数据流
StreamReader weatherStreamReader = new StreamReader(htmlStream, Encoding.UTF8);
//读取数据
Html = weatherStreamReader.ReadToEnd();
weatherStreamReader.Close();
htmlStream.Close();
htmlResponse.Close();
//针对不同的网站查看html源文件
StreamWriter FileWriter = new StreamWriter(Server.MapPath(@"~/newss/") + sdr["id"].ToString() + ".html", true); //写文件
FileWriter.Write(Html);//将字符串写入
FileWriter.Flush();
FileWriter.Close(); //关闭StreamWriter对象
TextBox1.Text = i.ToString(); //这个呢 是用来完成后,显示给用户看的一个控件而已(比如显示完成的了 什么的提示语)
}
else
{
}
}
finishProgress();
sdr.Close();
con.Close();
}
}
现在在 需要调用的页面 例如你 test.aspx 在框架调用 你刚才新建的neironghtml.aspx
<a href="neironghtml.aspx" target="jianjie" onclick="document.getElementById('divjianjie').style.display='block'">
<input id="Button5" type="button" value="内容生成按钮" class="button3"/></a>
<div id="divjianjie" onclick="this.style.display='none'" width="400" height="50">
<iframe name="jianjie" src="" width="400" height="50" frameborder="no" border="0"
marginwidth="0" marginheight="0" scrolling="no" allowtransparency="yes"></iframe>
</div>
对了 还有一个ProgressBar.htm 代码如下 ,新建一个就好
<script language="javascript">
function SetPorgressBar(pos) {
//设置进度条居中
var screenWidth = document.body.offsetWidth;
ProgressBarSide.style.height = "31px";
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 = "生成静态中";
}
</script>
<div id="ProgressBarSide" style="position: absolute; height: 31px; width: 200px;
border-width: 1px; border-style: Solid; display: block">
<div id="ProgressBar" style="position: absolute; height: 31px; width: 0%; background-color: #09F738">
</div>
<div id="ProgressText" style="position: absolute; height: 31px; width: 200px; text-align: center">
</div>
<div id="ProgressTitle" style="position: absolute; height: 31px; top: 61px; width: 100%;
text-align: center">
</div>
</div>