Search code examples
asp.netwebformsreportbuttonclickmicrosoft-reporting

Button OnClick event not working in ASP.NET Web Form Application


I followed this tutorial to create following ASP.NET web form to send parameters to a stored procedure and show the results using Microsoft Report.

enter image description here

this is Incomplete_Prodcut.aspx file

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Incomplete_Prodcut.aspx.cs" Inherits="albaraka.Report.Incomplete_Prodcut" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width: 1116px">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <br />
        Type:
        <asp:TextBox ID="type" runat="server" Width="64px"></asp:TextBox>
&nbsp;Category:
        <asp:TextBox ID="category" runat="server" Width="78px"></asp:TextBox>
&nbsp;Country:
        <asp:TextBox ID="country" runat="server" Width="85px"></asp:TextBox>
&nbsp;Subsidary:
        <asp:TextBox ID="subsidary" runat="server" Width="72px"></asp:TextBox>
&nbsp; Date:
        <asp:TextBox ID="date" runat="server" Width="100px"></asp:TextBox>
&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="btnShow" runat="server" Text="Button" Width="56px" />
&nbsp;<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="397px" Width="951px" style="margin-top: 17px; margin-right: 0px;"></rsweb:ReportViewer>
    </div>
    </form>
</body>
</html>

this is Incomplete_Prodcut.aspx.cs file

protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnShow_Click(object Sender, EventArgs e)
{
    ShowReport();
}

private void ShowReport()
{
    //Reset
    ReportViewer1.Reset();

    //DataSource
    ALBARAKA_Incomplete_Product_DataSet dt = GetData(type.Text, category.Text,subsidary.Text,country.Text, DateTime.Parse(date.Text));
    ReportDataSource rds = new ReportDataSource("Incomplete_Product_DataSet", dt);

    ReportViewer1.LocalReport.DataSources.Add(rds);

    //Path
    ReportViewer1.LocalReport.ReportPath = "~/Report/Incomplete_Product.rdlc";

    //Paramaeters
    ReportParameter[] rptParams = new ReportParameter[] {
        new ReportParameter("type",type.Text),
        new ReportParameter("category", category.Text),
        new ReportParameter("country",country.Text),
        new ReportParameter("subsidary",subsidary.Text),
        new ReportParameter("date",date.Text),
    };
    ReportViewer1.LocalReport.SetParameters(rptParams);

    //Refersh
    ReportViewer1.LocalReport.Refresh();

}

private ALBARAKA_Incomplete_Product_DataSet GetData(string type, string category, string country, string subsidary, DateTime? date)
{

    ALBARAKA_Incomplete_Product_DataSet dt = new ALBARAKA_Incomplete_Product_DataSet();
    string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["AB_ReportEntities"].ConnectionString;
    using (SqlConnection cn = new SqlConnection(connStr))
    {

        SqlCommand cmd = new SqlCommand("FindIncomplete_Products", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@type", SqlDbType.NVarChar).Value = type;
        cmd.Parameters.Add("@category", SqlDbType.NVarChar).Value = category;
        cmd.Parameters.Add("@country", SqlDbType.NVarChar).Value = country;
        cmd.Parameters.Add("@subsidary", SqlDbType.NVarChar).Value = subsidary;
        cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = date;

        SqlDataAdapter adp = new SqlDataAdapter(cmd);

        adp.Fill(dt);
    }

    return dt;
}

I inserted debug point inside the OnClick event of above form, but Once run this application in debug mode and click "btnShow" button this application does not point to this debug point. whats wrong with my approach ?

enter image description here


Solution

  • You have not attached the event handler to the button, add one:-

    <asp:Button ID="btnShow" runat="server" Text="Button" Width="56px" 
                OnClick="btnShow_Click" />
    

    Alternatively, you can also attach the event programmatically like this:-

    protected void Page_Load(object sender, EventArgs e)
    {
        btnShow.Click += btnShow_Click;
    }