Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Обновление содержимого страницы (каждые 10 сек)


Автор: EuGenius_Krivbass 2.6.2007, 13:17
Как заставить страницу обновлять себя каждые 10 секунд. Кто работал с таймерами, подскажите. Или подкиньте другую идею...
желательно, чтобы был такойц эффект, как при нажатии на F5...
Благодарю за помощь.

Автор: Mymik 2.6.2007, 13:34
чтобы совсем-совсем обновлялась через 10 секунд ??? или чтобы часть страницы обновлялась ???
Если совсем совсем тогда в конце документа поставь
Код

<script type="text/javascript">
setTimeout("window.refresh();", 10000);
</script>

И тогда совсем-совсем будет обновляться.
А если частично, то копай в сторону AJAX

Автор: EuGenius_Krivbass 2.6.2007, 16:09
Может быть в другом случае этот код бы мне помог...
Перефразирую вопрос: нужно каждые 10 сек запускать метод
Page_Load(object sender, EventArgs e){}

есть такой код. таймер работает(правда как-то коряво).но время на странице не отображается. может надо как-то обновлять....?

Код

Timer timer10;    
    protected void Page_Load(object sender, EventArgs e)
    {        
        timer10 = new Timer();
        timer10.AutoReset = true;
        timer10.Interval = GetNewInterval();
        timer10.Elapsed += new ElapsedEventHandler(timer_Elapsed);
        FormLoad();
        timer10.Start();
    }
    protected void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
    {       
        timer10.Stop();
        FormLoad();
        timer10.Interval = GetNewInterval();
        timer10.Start();   
        
        
    }
    protected void FormLoad()
    {
        Time.Text = DateTime.Now.ToShortTimeString();
        
    }
    protected double GetNewInterval()
    {
        double interval = 1000*(DateTime.Now.Second % 10.0f);
        if (interval == 0.0) interval = 10000;
        return interval;
    }

Благодарю за помощь.

Автор: Mymik 2.6.2007, 19:21
EuGenius_Krivbass, вообще этот таймер, это серверный таймер. А тебе нужно обновлять данные на клиенте... а если тебе нужно обновлять данные на клиенте, то тебе нужно возбуждать какие-либо действия на клиенте... Либо отправлять AJAX запросы. Либо обновлять страницу целиком... и твой таймер тут тебе не поможет.

Автор: EuGenius_Krivbass 2.6.2007, 19:58
Mymik, как обновлять страницу целиком? выше указанный скрипт не помогает. я первый раз в ASP.NET. раньше работал в шарпе и плюсах(тут с таймерами все получалось идеально).

вопрос по аяксу. я выкачал ASPAJAXExtSetup.msi. теперь ставить  его и пробовать запускать коды аякса (в гугле похожее нашел)? что еще необходимо для аякса?

Автор: GRIENDERS 5.6.2007, 13:11
Проще нет ничего
Код

protected void Page_Load(object sender, EventArgs e)    
{        
     Response.AddHeader("REFRESH", "10");
}

И каждые 10 сек возникает Page_Load

Автор: EuGenius_Krivbass 8.6.2007, 00:06
GRIENDERS, благодарю. работает просто красота. это мне и нужно было, чтобы динамически задавать время обновления страницы.

Автор: kedicik 8.6.2007, 00:27
А у меня похожий может быть вопрос. Только мне нужно не обновлять страницу а каждые 10 сек вызывать мою функцию. Это как реализовать?

Автор: Mr_Smith 8.6.2007, 07:19
пишешь 
 <body onload="setInterval('UpdatingPanel()', 10000);"> 

по форму кидаешь кнопку на событие которой вешаешь свою функцию
  <asp:Button runat="server" ID="btnUpdate" Visible="false" />


Решистрируешь скрипт:
Код

      protected void Page_Load(object sender, EventArgs e) 
      { 
          string scr = "<script language=javascript>"; 
          scr += "function UpdatingPanel()"; 
          scr += "{"; 
          scr += "    " + Page.ClientScript.GetPostBackEventReference(btnUpdate, "") + ";"; 
          scr += "}"; 
          scr += "</script>"; 
          RegisterStartupScript("scr" + this.ClientID, scr); 
      } 

и еще нужно прописать в <%@ Page %> - EnableEventValidation="false" 

Автор: dazy 8.6.2007, 08:03
Просто, как дополнение. 

Очень часто многострочный код JS удобнее писть в таком формате:

Код

      protected void Page_Load(object sender, EventArgs e) 
      { 
          string scr = @"<script language=javascript>
          function confirm()  {
              return confirm ('Confirmation?');
          }
          </script>"; 
      } 


Все символы после @ воспринимаются как строковые, такми образом удобнее вводить многострочные скрипты.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)