最近在做一个信息采集程序 大概流程是 首先输入一个网址 是一个新闻列表网页,然后再获取列表网页里的所有新闻连接,在根据新闻连接获取新闻。
遇到一个问题
一个库表weburl里面存储了所有的新闻列表也的网址weburl
我获取了标中的所有连接到一个table中叫dt
然后我
   foreach (DataRow row in dt.Rows)
{***this.label1.text=row["weburl"].tostring();****
//获取了所有的新闻连接到一个数组string[]叫AllUrl
foreach(string url in AllUrl)
{
//然后获取每个连接中的新闻内容。
***this.label2.text=url;
}
}问题时这样的,我设置了2个label1,label2 
我希望循环过程中。让列表网页网址显示在label1中,让每一条信息网页url显示在label2中,没一秒显示一个,
当子循环显示结束后,label1变换到下一个新闻列表网址,然后label2再每一秒显示一个新闻页面的网址,直到父循环循环完毕
这个问题已经困扰我2天了,
请各位高手解答 或者给各思路,或者告诉我这个过程用到了什么控件,
指条明路~!~谢谢

解决方案 »

  1.   

    没一秒显示一个, 
    =-=====================================
    不能使用上面的传统的页面,应该使用Ajax技术实现。
      

  2.   

     foreach   (DataRow   row   in   dt.Rows) 
    {  
    //获取了所有的新闻连接到一个数组string[]叫AllUrl 
    foreach(string   url   in   AllUrl) 

    ***this.label1.text=row[ "weburl "].tostring();****
    //然后获取每个连接中的新闻内容。 
    ***this.label2.text=url; 


    不知道这样是不是你想要的呢!呵呵
      

  3.   

    我觉得用JAVASCRIPT比较好,首先在DT中有一个标识字段ID(对应每一个weburl),然后在c#程序中将当前要显示的weburl1和下一条weburl2的id2,以及那个allurl数组传递到web页面的三个hidden控件中,hidden1.Value=weburl1;hidden2.Value=id2;foreach(string str in allurl) hidden3.Value+=str;
    在前台创建一个BUTTON id="button1" 并隐藏onclick调用和上面相似的代码,作用是获取Hidden2.value从数据库中获取当前要显示的weburl
    然后前台有一段javascript代码用SETTIMEOUT(FUNCTION(),1000)函数在label2中循环显示新闻页面的网址,当该循环结束后,调用button1.submit();即可
    总而言之,你所说的外层循环即weburl是放在服务器端执行的,而内层循环则有客户端的javascript控制,当客户端循环结束后,就自动向服务端请求下一个weburl和allurl
    个人的愚见,望高人指点!
      

  4.   

    4楼的 在界面里面 不显示更新 ,会出现假死然后label会显示最后一个数据,中间的都跳跃过去了
    5楼的多线程技术是什么样的。能给些例子参考下么?我听过从来没见过
      

  5.   

    我这个是 WINFORM JAVASCRIPT能用么?
      

  6.   


    foreach   (DataRow   row   in   dt.Rows)
    {***this.label1.text=row[ "weburl "].tostring();****
    //获取了所有的新闻连接到一个数组string[]叫AllUrl
    foreach(string   url   in   AllUrl)
    {
    //然后获取每个连接中的新闻内容。
    ***this.label2.text=url;
    Timer t = new Timer(new TimerCallback(TimerProc));
    t.Change(0, 1000);}

    private void TimerProc(object state)
        {
            Timer t = (Timer) state;
            t.Dispose();
        }这样就实现你要的功能了。
      

  7.   

    foreach       (DataRow       row       in       dt.Rows)
    {***this.label1.text=row[   "weburl   "].tostring();****
    //获取了所有的新闻连接到一个数组string[]叫AllUrl
    foreach(string       url       in       AllUrl)
    {
    //然后获取每个连接中的新闻内容。
    ***this.label2.text=url;
    Thread.Sleep( 1000 );
    }
    }   这样简单点
      

  8.   

    this.label1.Fresh();
    this.label2.Fresh();
    测试通过。