prerender event

  • Thread starter Thread starter Yankee Imperialist Dog
  • Start date Start date
Y

Yankee Imperialist Dog

i'm not sure how the preRender event gets handled.

if i have a function:
protected void tbPasswordPreRender(object sender, EventArgs e)
{
tbPswd1.Attributes["value"] = tbPswd1.Text;
tbPswd2.Attributes["value"] = tbPswd2.Text;
}
and set the two text boxes Prerender event to this single function will it
fire twice?
I'm hoping that dot.net is smart enough to do it oncelike the way sqlserver
handles some sub queries.
 
Hi,

if it is wired to two controls, it will run twice, no question about that -
this has nothing to do with SQL Server's subqueries :-). Controls do not
know about each other unless it is explicitly somehow stated by the page
developer. Controls cannot assume much about logic - like the logic run on
their Prerender event , as the assumption could be wrong, too.

Instead of hardcoding the controls in the event handler, you could rely on
event being raised for specific control and deal with only it.

You could for example run it like this:

//Wiring events somewhere
tbPswd1.PreRender += new EventHandler(tbPasswordPreRender);
tbPswd2.PreRender += new EventHandler(tbPasswordPreRender);


protected void tbPasswordPreRender(object sender, EventArgs e)
{
//Use the knowledge that control raising the event is available via
sender argument
TextBox tb=(TextBox)sender;
tb.Attributes["value"] = tb.Text;
}

When it works equally for all TextBoxes you assign this handler to.
 
thank you for replying,
where in the page cycle should i drop this so that it will call once?

--
Share The Knowledge. I need all the help I can get and so do you!


Teemu Keiski said:
Hi,

if it is wired to two controls, it will run twice, no question about that -
this has nothing to do with SQL Server's subqueries :-). Controls do not
know about each other unless it is explicitly somehow stated by the page
developer. Controls cannot assume much about logic - like the logic run on
their Prerender event , as the assumption could be wrong, too.

Instead of hardcoding the controls in the event handler, you could rely on
event being raised for specific control and deal with only it.

You could for example run it like this:

//Wiring events somewhere
tbPswd1.PreRender += new EventHandler(tbPasswordPreRender);
tbPswd2.PreRender += new EventHandler(tbPasswordPreRender);


protected void tbPasswordPreRender(object sender, EventArgs e)
{
//Use the knowledge that control raising the event is available via
sender argument
TextBox tb=(TextBox)sender;
tb.Attributes["value"] = tb.Text;
}

When it works equally for all TextBoxes you assign this handler to.

--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net


Yankee Imperialist Dog said:
i'm not sure how the preRender event gets handled.

if i have a function:
protected void tbPasswordPreRender(object sender, EventArgs e)
{
tbPswd1.Attributes["value"] = tbPswd1.Text;
tbPswd2.Attributes["value"] = tbPswd2.Text;
}
and set the two text boxes Prerender event to this single function will it
fire twice?
I'm hoping that dot.net is smart enough to do it oncelike the way
sqlserver
handles some sub queries.
 
Back
Top