tags:

views:

222

answers:

4

What are the points to check for, when an ASP.NET button is not firing an event?

I have double-clicked the button to add an event-handler.

But event is not firing.

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="TeacherControlPanel.aspx.cs" Inherits="Teacher_TeacherControlPanel" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <table style="width: 346px">
        <tr>
            <td>
                <asp:Label ID="labErrorMessage" runat="server" Font-Bold="True" Font-Names="Verdana"
                    Font-Size="Small" ForeColor="#C00000" Text="Error Message"></asp:Label></td>
            <td>
                </td>
            <td>
                </td>
            <td>
                </td>
        </tr>
        <tr>
            <td>
                Teacher Control Panel</td>
            <td>
                Mails</td>
            <td>
                Notices</td>
            <td>
                Uploads</td>
        </tr>
        <tr>
            <td rowspan="3">
                <table style="width: 134px">
                    <tr>
                        <td>
                            Username:</td>
                        <td>
                            <asp:Label ID="labUsername" runat="server" Text="labUsername"></asp:Label></td>
                        <td>
                            Teacher Code:
                        </td>
                        <td style="width: 3px">
                            <asp:Label ID="labTeacherCode" runat="server" Text="labTeacherCode"></asp:Label></td>

                    </tr>
                    <tr>
                        <td>
                            Name :</td>
                        <td>
                            <asp:Label ID="labName" runat="server" Text="labName"></asp:Label></td>
                        <td>
                            Department</td>
                        <td style="width: 3px">
                            <asp:Label ID="labDepartment" runat="server" Text="labDepartment"></asp:Label></td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td style="width: 3px">
                        </td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td style="width: 3px">
                        </td>
                    </tr>
                </table>
            </td>
            <td>
                <asp:Button ID="btnSendMail" runat="server" Height="24px" Text="Send Mail" Width="130px" OnClick="btnSendMail_Click" /></td>
            <td>
                <asp:Button ID="btnSubmitNewNotice" runat="server" Height="24px" Text="Submit New Notice"
                    Width="130px" /></td>
            <td>
                <asp:Button ID="btnViewUploads" runat="server" Height="24px" Text="ViewUploads" Width="130px" /></td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnViewOldMails" runat="server" Text="View Old Mails" OnClick="btnViewOldMails_Click" /></td>
            <td>
                <asp:Button ID="btnViewOldNotices" runat="server" Height="24px" Text="View Old Notices"
                    Width="130px" /></td>
            <td>
                <asp:Button ID="btnViewDefaulters" runat="server" Height="24px" Text="View Defaulters"
                    Width="130px" /></td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnReceivedMails" runat="server" Height="24px" Text="Received Mails"
                    Width="130px" /></td>
            <td>
            </td>
            <td>
            </td>
        </tr>
        <tr>
            <td colspan="4" rowspan="1">
                <asp:GridView ID="UploadsGridView1" runat="server">
                </asp:GridView>
            </td>
        </tr>
    </table>
</asp:Content>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Ice_Web_Portal.ASP.NET.Utils;
using Ice_Web_Portal.BO;

public partial class Teacher_TeacherControlPanel : System.Web.UI.Page
{
    string username = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        username = (string)Request.QueryString["username"];

        Teacher teacher = Teacher.GetTeacherByUsername(username);

        if (teacher != null)
        {
            labUsername.Text = username;
            labName.Text = teacher.TeacherName;
            labTeacherCode.Text = teacher.TeacherCode;

            Dept dept = teacher.Department;

            if (dept != null)
            {
                labDepartment.Text = dept.DeptName;
            }
        }
        else
        {
            labErrorMessage.Text = "No teacher found";
        }
    }

    protected void btnSendMail_Click(object sender, EventArgs e)
    {
        try
        {
            Server.Transfer(@"~/Teacher/TeacherSendMail.aspx?username=" + username);
            //Response.Redirect(@"~/Student/StudentSendMail.aspx?username=" + username);
        }
        catch (Exception ex)
        {
            string m;
        }
    }

    protected void btnViewOldMails_Click(object sender, EventArgs e)
    {
        try
        {
            Server.Transfer(@"~/Teacher/TeacherOldMail.aspx?username=" + username);
            //Response.Redirect(@"~/Student/StudentSendMail.aspx?username=" + username);
        }
        catch (Exception ex)
        {
            string m;
        }
    }
}

This is the master page:

MasterPage.master
-----------------
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">

    <table>
        <tr>
        <td><asp:HyperLink ID="homePageHyperlink" runat="server" NavigateUrl="~/Default.aspx">Home</asp:HyperLink></td>        
        <td rowspan="5">&nbsp;<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder></td>
        </tr>
        <tr>
        <td><asp:HyperLink ID="studentControlPanelHyperlink" runat="server">Student</asp:HyperLink></td>        
        </tr>
        <tr>
        <td></td>        
        </tr>
        <tr>
        <td></td>  
        </tr>
        <tr>
        <td></td>   
        </tr>
    </table>    
    </form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}
A: 

I use your code in Web Application Project and everything working fine. Did you use a web application or a Web Site project ?

And what is the version framework you use ?

which button you try ?

Cédric Boivin
I am using VS2005 and Web Site project. Framework is, .net 2.0.xxx
ID==btnSendMail
Try to use Web Application Web site. Lot of bug are in the web site project.
Cédric Boivin
What are the points to check for, when an ASP.NET button is not firing an event?
I am using VS2005. Web applications can't be created by VS2005.
Point one: check to see that, if an exception occurred, you'd know about it. You've failed point one - get rid of those try/catch blocks that do nothing but prevent you from learning about exceptions.
John Saunders
Update to VS2005 SP1, where you can create Web Application Projects.
John Saunders
The first thing i check generally it's the ID of the control when you added dinamycly... but it's not your case.Try to just convert your project with Web Application Project and i am sure you will solve your problem. there is the way to install web application project in vs 2005 http://msdn.microsoft.com/en-us/asp.net/aa336618.aspx
Cédric Boivin
Have you solve your problem ?
Cédric Boivin
A: 

Try another angle - Take the OnClick attribute off of the asp:Button and explicitly add the event handler in the code behind in OnInit

protected override void OnInit(EventArgs e)
{
    btnSendMail.Click += new EventHandler(btnSendMail_Click);
    base.OnInit(e);
}
Russ Cam
This is a Web Site Project - will that work? Will the Code File (it's not "CodeBehind") be able to see the "`btnSendMail`" field?
John Saunders
I don't have Visual Studio 2005 to hand but have 2008 and you can do the above in a Web Site project in 2008.
Russ Cam
A: 

Maybe a stupid question, but is javascript enabled in your browser?

M4N
+1  A: 

Please try the following in order to diagnose the problem:

  1. Create a new top-level page in the site. Add a single button to it. Double-click the button to add an event handler. Set a breakpoint at the event handler and see if it gets hit when you click the button.
  2. Create a new content page in the site, using the same master page. Add a single button to it. Double-click the button to add an event handler. Set a breakpoint at the event handler and see if it gets hit when you click the button.
  3. Create a new master page in the site. Add a content placeholder to it and nothing else. Create a new content page in the site, with this new master. Add a single button to it. Double-click the button to add an event handler. Set a breakpoint at the event handler and see if it gets hit when you click the button.
John Saunders