日期:2014-05-16  浏览次数:20718 次

生成静态 停顿 进度条 有尝服务
生成静态功能代码:1 已有现成的生成静态代码(不需要写了) 2 目前是全部一下生成(点下按钮一下要生成的太多了,需要改成每生成一个或几个页面,停顿一下,释放下资源,然后继续生成) 3 做个生成的进度条  有尝的(100元 人民币) 谁做啊 郁闷

------解决方案--------------------
给个思路

JScript code
var nowRow=0//定义当前生成的行
  ,maxRow=10//定义每次最大生成的页面数量
  ,timeSpan=10;//定义每次生成的间隔时间,单位为1

function createStatic(){
//这里使用ajax向动态页发送nowRow参数,然后动态页根nowRow来读取数据然后生成静态页面
//在生成完成后返回是否已经全部生成,如果全部生成后返回一个标志为如1,然后提示生成完成,然后清除计时器
//如果未完成,更新页面显示进度的dom对象
}
var timer=setInterval("createStatic()",timeSpan*1000);

------解决方案--------------------
今天需要对数据库进行更新,把含html代码的字段先去掉html代码再更新到另外一个字段,和你这个差不多,给你参考下

示例代码点这里下载

update.ashx
C# code
<%@ WebHandler Language="C#" Class="update" %>
//将含有html代码的内容转为换纯文本的处理文件
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
public class update : IHttpHandler {
    private bool IsInt(string v)
    {
        if (v == null) return false;
        v = v.Trim();
        return Regex.IsMatch(v, @"^\d+$");
    }
    private string RemoveHTML(string v)
    {
        if (v == null) return v;
        return Regex.Replace(v, " |&[a-z]+;|'|\"|<[^>]+>|,|,|\\.|。", "", RegexOptions.Compiled | RegexOptions.IgnoreCase);
    }
    public void ProcessRequest(HttpContext context)
    {
        context.Response.Charset = "utf-8";
        context.Response.ContentType = "text/html";
        HttpRequest Request = context.Request;

        string rowIndex = Request.Form["ri"], mr = Request.Form["mr"], Sql = "";
        int iRowIndex = 0, iMR = 10;//如果未传递每次生成多少行,则默认10行,如果处理的行号不为整数,默认从第0行开始
        if (IsInt(mr)) iMR = int.Parse(mr);
        if (IsInt(rowIndex)) iRowIndex = int.Parse(rowIndex);

        Sql = "select top " + iMR + " * from(select top " + (iMR * iRowIndex + iMR) + " [id],content from info order by [id])tmp order by [id] desc";//注意这里取数据的方式,id为自动增长的字段,可以不连续
        SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=;database=newsdb;");//注意修改你的驱动。。。。。。
        cn.Open();
        bool Ok = true;

        try
        {
            DataTable dt = new DataTable();
            new SqlDataAdapter(Sql, cn).Fill(dt);//============取数据,下面的代码改为你的生成静态页面的代码
            SqlCommand cm = new SqlCommand();
            cm.Connection = cn;
            string tmp="";
            foreach (DataRow dr in dt.Rows)
            {
                tmp = RemoveHTML(dr[1].ToString());
                if (tmp.Length > 450) tmp = tmp.Substring(0, 450);   
                cm.CommandText = "update info set purect='"+tmp+"' where [id]=" + dr[0];
                cm.ExecuteNonQuery();
            }
        dt.Dispose();
        }
        catch { Ok = false; }
        cn.Close();
        if (!Ok) throw new Exception("操作失败~~~");//抛出错误,让ajax重新执行当前操作
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}