日期:2014-05-16 浏览次数:20806 次
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
<%@ 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;
}
}
}