Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Label is not updated in event callback

Reply
Thread Tools

Label is not updated in event callback

 
 
Borr
Guest
Posts: n/a
 
      11-05-2003
Code fragment as simple as possible :

public class TestTimer : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Timers.Timer timer1;

private void Page_Load(
object sender,
System.EventArgs e)
{
Label1.Text = "Before timer";
}

private void timer1_Elapsed(
object sender,
System.Timers.ElapsedEventArgs e)
{
Label1.Text = "After timer";
timer1.Stop();
}

private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)
(this.timer1)).BeginInit();
this.timer1.Enabled = true;
this.timer1.Interval = 5000;
this.timer1.Elapsed += new
System.Timers.ElapsedEventHandler(this.timer1_Elap sed);
this.Load += new System.EventHandler(this.Page_Load);
((System.ComponentModel.ISupportInitialize)
(this.timer1)).EndInit();

}

}

When the timer is elapsed, timer1_elapsed method is called
(I see it in the debugger), line

Label1.Text = "After timer";

runs without any problem, but in fact Label1
remains "Before timer" ! WHY ?

Label1 and timer1 were added automatically, with Web form
designer of Visual Studio .Net, InitializeComponent()
method was generated automatically, and I did not touch it.

 
Reply With Quote
 
 
 
 
Cliff Harris
Guest
Posts: n/a
 
      11-05-2003
The problem is that the timer is a server-side control, and while, yes, it
is firing properly, by the time it fires, the page has already been sent to
the client and therefore, updating the label only updates it on the server.
Once the page has been served, nothing that happens on the server will be
sent down to the client.
If you need something on the client side to update after a given interval,
you might want to look into a javascript timer, they seem to have worked
well for me in the past.

HTH,
-Cliff

"Borr" <(E-Mail Removed)> wrote in message
news:0a9801c3a3c2$6b9a40c0$(E-Mail Removed)...
> Code fragment as simple as possible :
>
> public class TestTimer : System.Web.UI.Page
> {
> protected System.Web.UI.WebControls.Label Label1;
> protected System.Timers.Timer timer1;
>
> private void Page_Load(
> object sender,
> System.EventArgs e)
> {
> Label1.Text = "Before timer";
> }
>
> private void timer1_Elapsed(
> object sender,
> System.Timers.ElapsedEventArgs e)
> {
> Label1.Text = "After timer";
> timer1.Stop();
> }
>
> private void InitializeComponent()
> {
> this.timer1 = new System.Timers.Timer();
> ((System.ComponentModel.ISupportInitialize)
> (this.timer1)).BeginInit();
> this.timer1.Enabled = true;
> this.timer1.Interval = 5000;
> this.timer1.Elapsed += new
> System.Timers.ElapsedEventHandler(this.timer1_Elap sed);
> this.Load += new System.EventHandler(this.Page_Load);
> ((System.ComponentModel.ISupportInitialize)
> (this.timer1)).EndInit();
>
> }
>
> }
>
> When the timer is elapsed, timer1_elapsed method is called
> (I see it in the debugger), line
>
> Label1.Text = "After timer";
>
> runs without any problem, but in fact Label1
> remains "Before timer" ! WHY ?
>
> Label1 and timer1 were added automatically, with Web form
> designer of Visual Studio .Net, InitializeComponent()
> method was generated automatically, and I did not touch it.
>



 
Reply With Quote
 
 
 
 
bruce barker
Guest
Posts: n/a
 
      11-05-2003
because the timer fires after the page has been sent to the client, so the
change to label has no impact. you would need to put in a wait for the timer
in your onload, or at least by prerender, for any changes done by the timer
to appear in the rendered page.

-- bruce (sqlwork.com)



"Borr" <(E-Mail Removed)> wrote in message
news:0a9801c3a3c2$6b9a40c0$(E-Mail Removed)...
> Code fragment as simple as possible :
>
> public class TestTimer : System.Web.UI.Page
> {
> protected System.Web.UI.WebControls.Label Label1;
> protected System.Timers.Timer timer1;
>
> private void Page_Load(
> object sender,
> System.EventArgs e)
> {
> Label1.Text = "Before timer";
> }
>
> private void timer1_Elapsed(
> object sender,
> System.Timers.ElapsedEventArgs e)
> {
> Label1.Text = "After timer";
> timer1.Stop();
> }
>
> private void InitializeComponent()
> {
> this.timer1 = new System.Timers.Timer();
> ((System.ComponentModel.ISupportInitialize)
> (this.timer1)).BeginInit();
> this.timer1.Enabled = true;
> this.timer1.Interval = 5000;
> this.timer1.Elapsed += new
> System.Timers.ElapsedEventHandler(this.timer1_Elap sed);
> this.Load += new System.EventHandler(this.Page_Load);
> ((System.ComponentModel.ISupportInitialize)
> (this.timer1)).EndInit();
>
> }
>
> }
>
> When the timer is elapsed, timer1_elapsed method is called
> (I see it in the debugger), line
>
> Label1.Text = "After timer";
>
> runs without any problem, but in fact Label1
> remains "Before timer" ! WHY ?
>
> Label1 and timer1 were added automatically, with Web form
> designer of Visual Studio .Net, InitializeComponent()
> method was generated automatically, and I did not touch it.
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Controls not updated by callback event Dave Weeden ASP .Net Building Controls 4 08-22-2007 07:21 AM
asp:label updated via javascript does not get its value saved in the viewstate ibiza ASP .Net 2 02-28-2006 04:51 PM
<label><div></div></label> allowed? Josef K. ASP .Net 3 05-22-2005 02:13 PM
label versus asp:label Question. Thanks. Shapper ASP .Net 2 05-07-2005 05:55 AM
Datagrid not updated during delete, but updated during insert and update Dmitry Korolyov ASP .Net Datagrid Control 0 09-22-2003 10:57 AM



Advertisments