OnPreRender button dynamic event does not fire

I create a button dynamically in the event PreRenderas follows:

Button myButton = new Button();
myButton.Text = "Test";
myButton.Click += new EventHandler(myButton_Click);
myDiv.Controls.Add(myButton);

This button is displayed in the browser, but when I click the button, the click event does not fire. I tried to create an identical button in the event PageLoad, and it works fine, but I have to create this button as an event PreRender, since the creation of this dynamic button or not depends on the value that I get only in this event. What can I do when I click the dynamic button created in PreRenderthe click event fires?

+3
source share
6 answers

OnInit click OnLoad, / / , PreRender. . Joel Coehoorn . PlaceHolder, .

protected override void OnInit (EventArgs e)
{
  Button myButton = new Button();
  myButton.Text = "Test";
  myButton.Click += new EventHandler(myButton_Click);
  myDiv.Controls.Add(myButton);

  base.OnInit(e);
}

protected override void OnPreRender(EventArgs e)
{
  myButton.Visible = myConditional;

  base.OnPreRender(e);
}
+1

,

Asp

(PREINIT):

  • .
0

, PreRender click PageLoad?

0

PreRender var, , . Render JavaScript . , + = EventHandler, .

0

MSDN , , OnInit(), : MSDN

" , , . Init Init . .

To do this, try something like this:

protected override void OnInit(EventArgs e)
{
   // Do some stuff here
   base.OnInit(e);
}
0
source

You must transfer the control creation earlier in the page life cycle. Control events are fired after Load and before PreRender, so OnLoad or something should do it earlier.

0
source

All Articles