Home All Groups Group Topic Archive Search About
Author
20 Dec 2005 12:14 PM
carentrica
For some reason, my "testButton_Click()" event handler is not being called
when testButton is clicked.
This Button and a Label are the only controls on a Web UserControl which is
loaded and displayed in the main document. When the button is clicked, a
postback occurs and the Page events get called, but not the Button Click
event.

public class LoginControl : System.Web.UI.UserControl
{
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.Button testButton;
    private bool loggedIn = false;

    private void Page_Load(object sender, System.EventArgs e)
    {
        // Put user code to initialize the page here
        if (Session["LoggedIn"] != null) {
            loggedIn = (bool)Session["LoggedIn"];
        }
    }

    private void testButton_Click(object sender, System.EventArgs e) {
        // this event handler is never called!
        loggedIn = true;
    }

    private void Page_PreRender(object sender, System.EventArgs e) {
        defaultWebForm defaultPage = (defaultWebForm)Context.Handler;
        // Method to switch the menu between "Log In" and "Log Out".
        defaultPage.ShowLoggedIn(loggedIn);
    }

    private void Page_Unload(object sender, System.EventArgs e) {
        Session["LoggedIn"] = loggedIn;
    }
}

In the InitializeComponent method, the event is wired...

        this.testButton.Click += new
System.EventHandler(this.testButton_Click);

Can anyone please tell me why?

Author
21 Dec 2005 3:52 AM
Jeff
Im not too familiar with C# or its dynamic allocation of handlers.
However. if you dont need to set the handlers dynamically, you might
want to just try setting the handler via buttons 'onClick' property

<asp:Button id="testButton" Text="Submit" onclick="testButton_Click"
runat="server"  />
Author
21 Dec 2005 4:41 AM
dbottjer
I know you said the event is wired in the InitializeComponent but you might
want to double check and make sure you haven't lost the binding.

Show quoteHide quote
"carentrica" wrote:

> For some reason, my "testButton_Click()" event handler is not being called
> when testButton is clicked.
> This Button and a Label are the only controls on a Web UserControl which is
> loaded and displayed in the main document. When the button is clicked, a
> postback occurs and the Page events get called, but not the Button Click
> event.
>
> public class LoginControl : System.Web.UI.UserControl
> {
>     protected System.Web.UI.WebControls.Label Label1;
>     protected System.Web.UI.WebControls.Button testButton;
>     private bool loggedIn = false;
>
>     private void Page_Load(object sender, System.EventArgs e)
>     {
>         // Put user code to initialize the page here
>         if (Session["LoggedIn"] != null) {
>             loggedIn = (bool)Session["LoggedIn"];
>         }
>     }
>
>     private void testButton_Click(object sender, System.EventArgs e) {
>         // this event handler is never called!
>         loggedIn = true;
>     }
>
>     private void Page_PreRender(object sender, System.EventArgs e) {
>         defaultWebForm defaultPage = (defaultWebForm)Context.Handler;
>         // Method to switch the menu between "Log In" and "Log Out".
>         defaultPage.ShowLoggedIn(loggedIn);
>     }
>
>     private void Page_Unload(object sender, System.EventArgs e) {
>         Session["LoggedIn"] = loggedIn;
>     }
> }
>
> In the InitializeComponent method, the event is wired...
>
>         this.testButton.Click += new
> System.EventHandler(this.testButton_Click);
>
> Can anyone please tell me why?
>
Author
21 Dec 2005 2:56 PM
carentrica
I think I've found the problem, guys. It seems to be something to do with the
order in which events fire. The Page Load event fires before the Control
events and my logic was reloading the Control each time instead of testing
that the QueryString didn't contain the value that would load the control.
I've just re-written all the relevant logic and things appear to working as
expected.

Many thanks for all your replies.

Show quoteHide quote
"dbottjer" wrote:

> I know you said the event is wired in the InitializeComponent but you might
> want to double check and make sure you haven't lost the binding.
>
> "carentrica" wrote:
>
> > For some reason, my "testButton_Click()" event handler is not being called
> > when testButton is clicked.
> > This Button and a Label are the only controls on a Web UserControl which is
> > loaded and displayed in the main document. When the button is clicked, a
> > postback occurs and the Page events get called, but not the Button Click
> > event.
> >
> > public class LoginControl : System.Web.UI.UserControl
> > {
> >     protected System.Web.UI.WebControls.Label Label1;
> >     protected System.Web.UI.WebControls.Button testButton;
> >     private bool loggedIn = false;
> >
> >     private void Page_Load(object sender, System.EventArgs e)
> >     {
> >         // Put user code to initialize the page here
> >         if (Session["LoggedIn"] != null) {
> >             loggedIn = (bool)Session["LoggedIn"];
> >         }
> >     }
> >
> >     private void testButton_Click(object sender, System.EventArgs e) {
> >         // this event handler is never called!
> >         loggedIn = true;
> >     }
> >
> >     private void Page_PreRender(object sender, System.EventArgs e) {
> >         defaultWebForm defaultPage = (defaultWebForm)Context.Handler;
> >         // Method to switch the menu between "Log In" and "Log Out".
> >         defaultPage.ShowLoggedIn(loggedIn);
> >     }
> >
> >     private void Page_Unload(object sender, System.EventArgs e) {
> >         Session["LoggedIn"] = loggedIn;
> >     }
> > }
> >
> > In the InitializeComponent method, the event is wired...
> >
> >         this.testButton.Click += new
> > System.EventHandler(this.testButton_Click);
> >
> > Can anyone please tell me why?
> >