0

我想在我的网站上申请一个项目( http://www.aspdotnet-suresh.com/2012/01/pass-parameters-to-crystal-reports-in.html )。我只获得我第一次选择的任何值并获得所需的报告,但如果我选择其他值,那么我再次获得报告以前的报告。有谁能够帮我?

默认.aspx.cs

protected void btnSearch_Click(object sender, EventArgs e)
{
    //CrystalReportViewer1.RefreshReport();
    ReportDocument reportdocument = new ReportDocument();
    reportdocument.Load(Server.MapPath("CrystalReport.rpt"));
    reportdocument.SetDatabaseLogon("", "", "ghaffar-pc", "Northwind");
    //reportdocument.SetParameterValue("Username", txtUserName.Text);
    reportdocument.SetParameterValue("CategoryID", Convert.ToInt32(txtUserName.Text));
    CrystalReportViewer1.ReportSource = reportdocument;
}

默认.aspx

    <table>
    <tr>
    <td><b>Enter UserName</b></td>
    <td><asp:TextBox ID="txtUserName" runat="server"/></td>
    </tr>
    <tr>
    <td></td>
    <td><asp:Button ID="btnSearch" runat="server" Text="Search" onclick="btnSearch_Click" /></td>
    </tr>
    </table>

</div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
    EnableDatabaseLogonPrompt="False" AutoDataBind="true" ReuseParameterValuesOnRefresh="False"
    EnableParameterPrompt="False" ToolPanelView="None" />

请注意,无论我选择什么值来显示报告,我都会在 CrystalReport.rpt 文件中获得所需的结果。

4

2 回答 2

0

称呼

reportdocument.Refresh();

就在stmt之后。

CrystalReportViewer1.ReportSource = reportdocument;
于 2012-07-27T18:02:54.193 回答
0

在这一行之后:

reportdocument.SetParameterValue("CategoryID", Convert.ToInt32(txtUserName.Text));

添加这个:

CrystalReportViewer1.ParameterFieldInfo.Clear();
于 2015-06-01T12:43:38.103 回答