Crystal Report Viewer'的参数面板为空

本文关键字:参数 Report Viewer Crystal | 更新日期: 2023-09-27 17:50:20

我在Visual Studio 2010中使用Crystal Reports 13 SP 13。报表在aspx.net网页中查看。我想要的是报告在加载之前提示输入一个参数,然后用户可以选择一个新参数并从中查看其他记录。我已经验证了我的参数,一个下拉列表,正在按预期工作。

我将参数设置为"可编辑",但面板中没有任何内容。事实上,如果我允许显示组树面板和按钮,则根本没有按钮可单击参数面板。

奇怪的是,当我正在努力解决之前的问题时,让用户在该面板中更改参数是有效的方法之一。

我当前的实现使用从数据集创建的数据表。报告存储在一个Session变量中。如果要我猜的话,就是这些东西之一给了我这个新问题。

我在这里发现了一些有趣的代码。

foreach (CrystalDecisions.Shared.ParameterField parameterField in reportDocument.ParameterFields)
{
  parameterField.ParameterFieldUsage2 = ParameterFieldUsage2.ShowOnPanel;
}

不幸的是,就像那个线程的海报一样,这段代码对我不起作用。系统抛出一个系统。当试图将ParameterFieldUsage2属性设置为ShowOnPanel时,出现NotSupportedException .

Crystal Report Viewer'的参数面板为空

所以事实证明会话一直是问题所在。无论出于何种原因,当报表存储在会话变量中时,您都无法更新参数。

因此,我不得不再次改变我的实现。

private ReportDocument rpt;
private myDataSet ds;
protected void Page_Init(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    ds = new myDataSet();
    myDataSetTableAdapters.myTableTableAdapter dsTA = new myDataSetTableAdapters.myTableTableAdapter();
    dt = dsTA.GetData();
    rpt = new ReportDocument();
    rpt.Load(Server.MapPath(mapPath));
    rpt.SetDataSource(dt);
    CrystalReportViewer1.ReportSource = rpt;
}

就是这样。我只需要这些就可以了。不用再担心回发或会话。在我经历了这一切之后,我不太明白这怎么能这么简单。