按钮 OnClick 事件在 ASP.NET Web 表单应用程序中不起作用

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

我按照 this tutorial 创建了以下 ASP.NET Web 表单以将参数发送到存储过程并使用 Microsoft Report 显示结果。

这是Incomplete_Prodcut.aspx文件

<%@ 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>

这是Incomplete_Prodcut.aspx.cs文件

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;
}

我在上面表格的 OnClick 事件中插入了调试点,但是一旦 运行 这个应用程序处于调试模式并单击 "btnShow" 按钮,这个应用程序就不会指向这个调试点。我的方法有什么问题吗?

您还没有将事件处理程序附加到按钮,添加一个:-

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

或者,您也可以像这样以编程方式附加事件:-

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