当前位置:编程学习 > C#/ASP.NET >>

.net中后台的一个for循环中的参数,怎样显示到前台?

例如:index.aspx 前台页面中包含一个label控件,index.aspx.cs后台有这么一个函数
for(int i=0; i<list.count; i++){
   label.text=list[i];
   for(...){
      //这个for循环执行时间长
   }
}
这样只有等第二个for循环执行完之后,label的值才能显示,现在有什么方法可以使第二个for循环还在执行中就可以显示出label的值?
麻烦各位高手指点一下,最好提供一下例子代码,在此感激万分! --------------------编程问答-------------------- 因为label.text=list[i];
所以label.Text其实是等于最后一个i所指定的list条目。

你说的“第二个for循环执行完之后,label的值才能显示”是什么意思? --------------------编程问答-------------------- 查查 ajax 吧。 --------------------编程问答--------------------
完全没看懂LZ要问的意思。。

一个Label的赋值,为什么要放在for循环里? --------------------编程问答-------------------- 另起一个线程 --------------------编程问答-------------------- 异步查询,ajax+cookie --------------------编程问答--------------------
引用 5 楼 dalmeeme 的回复:
异步查询,ajax+cookie


有没有例子?刚学.net不久,不是很懂 --------------------编程问答--------------------
引用 1 楼 gqqnb 的回复:
因为label.text=list[i];
所以label.Text其实是等于最后一个i所指定的list条目。

你说的“第二个for循环执行完之后,label的值才能显示”是什么意思?


1楼可以写个代码试试,前台界面要显示到label的值,只有等后台的循环都结束后,才可以正常显示,我想实现一边循环一边在前台界面显示label的值,是不是应该用多线程? --------------------编程问答-------------------- 这基本不现实,看看asp.net页面生命周期,事件还没执行完就不会去load页面,就算用ajax也得执行完之后返回结果才能修改页面,不知道楼主为什么有这样的需求 --------------------编程问答--------------------
引用 8 楼 thedolphin 的回复:
这基本不现实,看看asp.net页面生命周期,事件还没执行完就不会去load页面,就算用ajax也得执行完之后返回结果才能修改页面,不知道楼主为什么有这样的需求

其实我是想做个爬虫的程序,因为爬虫要循环地获取网址,而我想知道现在到底是循环到哪个地址,想把目前正在爬取的网址显示出来。请问有什么方法可以实现? --------------------编程问答-------------------- 把lable要变化的值放进第二个for循环里就可以了撒 --------------------编程问答-------------------- 嗯,后台里面这么写 一定是等到最后执行完毕了LABEL才会显示,等到网页显示后是看不到list[1] list[2] list[3]的值,而是最后显示的是最后一个设置的list[i],网上很多例子是updateprogress 静态提示 和假进度条,AjaxPro又不能用服务器端控件,实在找不到资料,用别的方法做 LZ有解决办法了没有? --------------------编程问答-------------------- ajax
www.w3school.com.cn


===================================签名档======================================
授人以鱼 不如授人以渔 --------------------编程问答-------------------- 这个还真不是开一个线程能解决的问题,看lz的意思是想动态实现循环执行的情况,Web端确实不好操作,只能说使用js+ajax实现,到时有可能,而且循环需要js来执行,并动态修改label的值 --------------------编程问答--------------------
引用 9 楼 a563005903 的回复:
其实我是想做个爬虫的程序,因为爬虫要循环地获取网址,而我想知道现在到底是循环到哪个地址,想把目前正在爬取的网址显示出来。请问有什么方法可以实现?


自服务式的业务处理,哪有用asp.net写的?asp.net程序员不适合考虑这些。 --------------------编程问答-------------------- 如果你根本没有什么前端用户交互设计,尽是要个最土的显示而已,你可以写

   Response.Write(list[i]);
   Response.Flush();
    for(...){
       //这个for循环执行时间长
   }

但是你懂的这对web交互界面设计有什么影响吗?但愿你可以理解。 --------------------编程问答--------------------
引用 1 楼 gqqnb 的回复:
因为label.text=list[i];
所以label.Text其实是等于最后一个i所指定的list条目。

你说的“第二个for循环执行完之后,label的值才能显示”是什么意思?


如果lz可以正确地“发现自己”只有在第一个for完毕之后(实际上也要等待一下,等待html输出到客户端,并且被浏览器解析渲染)才能看到label,而不是“第二个for”完毕以后,那么lz也就不会提这种问题了。

有时候,人的问题是出自:连问题都没有搞清楚。 --------------------编程问答--------------------
在第二循环中加Application.DoEvents();
就可看到label.text内容的变化
for(int i=0; i<list.count; i++){
   label.text=list[i];
   for(...){
      //这个for循环执行时间长
        Application.DoEvents();
   }
}

--------------------编程问答-------------------- 不然,就会只有等第二个for循环执行完之后,label的值才能显示的 --------------------编程问答--------------------

测试例子
private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 50; i++)
            {
                label1.Text = i.ToString();

                for (int j = 0; j < 550; j++)
                {
                   
                    j++;
                    textBox1.Text=(i*j).ToString();
                    Application.DoEvents();


                }


            }    
          

        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,