asp.net C#批量生成html带进度条
asp和php可以做的到(南方数据那个静态生成方法),,但是asp.net C#不知怎么做,给我的感觉就是他一次性执行完,才输出的,而asp和php是执行多少输出多少!asp.net C#批量生成html带进度条
的方法或思路
试过用            Response.Flush();  Response.Buffer = false;System.Threading.Thread.Sleep(10);这些方法,,效果都不是很满意

解决方案 »

  1.   

    哎,,,看来没人会了,,在google找了很久了,,没找到,难道大家生成静态都不带进度条的吗,,
    起码我做asp或php的时候会做带进度条的
      

  2.   

    通过模板生成html页面,获取数据后遍历显示进度条。
    参考
    参考
      

  3.   

    http://topic.csdn.net/u/20071119/20/4630e936-320a-4d91-93cc-a7293902c058.html
    是asp的,,http://www.cnblogs.com/yhb199/archive/2008/10/28/1321140.html作用不大,,也是我说的Response.Flush();  
      

  4.   

    试试ajax了,这东西,我也想知道~~~期待高手~~
      

  5.   

    难道asp与php是生成多少输出多少?生成进度条的时候,你的页面其它部分还没出来吧?告诉你怎么做吧用一个Application值去保存生成 的进度值(0-100)用一个线程去执行生成html的代码,并随时更新进度值在已经发送的页面中使用js+xmlhttp去不断的请求该application并随时更新ui,并在100%之后关闭这些对像如果你还有疑问证明你技术不到家呀.
      

  6.   


    asp和php是生成多少输出多少的,,不信你可以看一下“南方数据库”这个 生成静态模块
    一真想做成那样的效果
      

  7.   

    先在客户端列出需要生成HTML的页面ID,再一个一个通过AJAX生成HTML,生成一个就返回成功,并修改进度条信息,再继续生成下一个.可能会变慢 而且性能损失
      

  8.   

    我用过asp.没有用过php,你的意思我知道不过你要了解http协义,他的特性本身就不支持长时间的保持连接状态,如果这个操作需时半小时,你不是浏览器要打开半小时,并且保持连接,不关闭窗口,你这个工作才能正常完成?
      

  9.   

    asp 的你参考参考
    http://www.builder.com.cn/2007/1017/560734.shtml
    功能很强大
      

  10.   

    http://download.csdn.net/source/289324
      

  11.   

    asp我会,,但是asp.net 不行
      

  12.   


    还是asp的,,,我很奇怪,,难道各位做批量生成时都不做,,进度条的吗
      

  13.   

    以前做过用winform做的话
    ,vs带的有进度条的控件,直接用个循环,每生成一个html页面进度就+1.
    同理asp.net的话,要先得到要生成的html页面的总数,然后每生成一个页面,进度条的长度+1
    进度条可以用个小图片来代替,就跟那些投票的差不多,一个带颜色的条条就行。以前做的不在,要不可以把例子给你看
      

  14.   

    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Web;public partial class manage_createHTML_Createpro : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Buffer = false;
            Response.Flush();
            if (!IsPostBack)
            {
                bind();
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Buffer = false;
            Response.Flush();        int str =Convert.ToInt16(DropDownList1.SelectedValue);
            string url = "";
            string web = "";
            switch (str) {
                case 67:                url = "http://" + Request.ServerVariables["HTTP_HOST"].ToString() + "/readcase.aspx?id=";
                    web = "readcase";
                    break;
                case 65:
                    url = "http://" + Request.ServerVariables["HTTP_HOST"].ToString() + "/read.aspx?id=";
                    web = "read";
                    break;            case 63:
                    url = "http://" + Request.ServerVariables["HTTP_HOST"].ToString() + "/proshow.aspx?id=";
                    web = "proshow";
                    break;
                case 61:
                    url = "http://" + Request.ServerVariables["HTTP_HOST"].ToString() + "/readdesign.aspx?id=";
                    web = "readdesign";
                    break;
            
            
            }        string sql = "select * from product_info where flag=0 and classid="+str+" order by leseno_id desc";
            string sql2 = "select count(*) as go from product_info where flag=0 and classid=" + str;        float su = sqlcmd.count(sql2);
            //float su = 100;
            OleDbDataReader odr = sqlcmd.reader(sql);
            float g = 0;
            float a=1;
            while (odr.Read()) {
                string path = Server.MapPath("/htmls/"+web+odr["leseno_id"].ToString()+".html");
                sqlcmd.S_DelFile(path);
                myHTML.create(url+odr["leseno_id"].ToString(), path, "utf-8");            g = g + 1;            a = (g / su) * 200;            RegisterStartupScript("d" + odr["leseno_id"].ToString(), "<script type='text/javascript'>document.getElementById('bar_company').style.width='" + a + "px';</script>\n");
                System.Threading.Thread.Sleep(50);
                Response.Flush();
            }
            g = 0;        odr.Close();
            odr.Dispose();
                  
        }    protected void bind() {        string sql = "select * from product_class where flag=0";        sqlcmd.DropDownListBind(sql,DropDownList1);
        
        }
    }
      

  15.   

    同理asp.net的话,要先得到要生成的html页面的总数,然后每生成一个页面,进度条的长度+1 
    进度条可以用个小图片来代替,就跟那些投票的差不多,一个带颜色的条条就行。 我同意这个用ajax控制进度条的长度
      

  16.   

    http://unbottle.appspot.com/?p=7003
    看这个吧,我根据那个asp的改成了asp.net的
    而且一句js代码都不用写
    使用的ajax控件的updatepanel和timer
      

  17.   


    可以用ajaxpro写一个来看一下吗,,不懂微软自带的那个ajax
      

  18.   


    你这个不是实时的,,但是asp和php可以做到实时的,,,你可以看一下  南方数据  是实时的,,,实现方法很简单,,但是同一的实现方法不能用在asp.net 上
      

  19.   

    汗。。这个就是实时的啊,原理和那个asp是一样的,只不过那个的数据传输和处理过程都是靠js完成的,而我是用AJAX控件完成的,你不懂可以就干脆不去懂,微软的东西就是傻瓜式,你点点拖拖就行了
      

  20.   


    同意此方法, 我前段时间做了个web进度条,就是基于ajax和多线程实现的
      

  21.   

    你们没看过南方数据,那个实时,,我做asp的时候也很实时,用ajax,是你请求了,才反回数据,但asp刚好,他生成一条就返回一条的百分之几,,两个不同概念的