Crystal Report Viewer 的参数面板是空的
Crystal Report Viewer's parameter panel is empty
我正在使用 Crystal Reports 13 SP 13 in Visual Studio 2010。该报告在 aspx.net 网页中查看。我想要的是报告在加载之前提示输入参数,然后用户可以 select 一个新参数并从中查看其他记录。我已验证我的参数(下拉列表)是否按预期工作。
我已将参数设置为 'editable',但面板中没有任何内容。事实上,如果我允许显示组树面板和按钮,那么参数面板根本就没有按钮可以点击。
奇怪的是,当我正在努力解决之前的问题时,让用户在该面板中更改他们的参数是有效的方法之一。
我当前的实现使用从数据集创建的数据表。报告存储在 Session 变量中。如果非要我猜的话,就是这些事情之一给我带来了新问题。
我发现了一些有趣的代码 here。
foreach (CrystalDecisions.Shared.ParameterField parameterField in reportDocument.ParameterFields)
{
parameterField.ParameterFieldUsage2 = ParameterFieldUsage2.ShowOnPanel;
}
不幸的是,就像那个线程的海报一样,这段代码对我不起作用。尝试将 ParameterFieldUsage2 属性 设置为 ShowOnPanel 时,系统抛出 System.NotSupportedException。
事实证明,会话一直是问题所在。无论出于何种原因,当报表存储在会话变量中时,您无法更新参数。
因此我不得不再次更改我的实现。
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;
}
就是这样。这就是我工作所需的全部。无需再担心 post 后背或会话。在我经历了一切来到这里之后,我不太明白这怎么会这么简单。但它有效。
我正在使用 Crystal Reports 13 SP 13 in Visual Studio 2010。该报告在 aspx.net 网页中查看。我想要的是报告在加载之前提示输入参数,然后用户可以 select 一个新参数并从中查看其他记录。我已验证我的参数(下拉列表)是否按预期工作。
我已将参数设置为 'editable',但面板中没有任何内容。事实上,如果我允许显示组树面板和按钮,那么参数面板根本就没有按钮可以点击。
奇怪的是,当我正在努力解决之前的问题时,让用户在该面板中更改他们的参数是有效的方法之一。
我当前的实现使用从数据集创建的数据表。报告存储在 Session 变量中。如果非要我猜的话,就是这些事情之一给我带来了新问题。
我发现了一些有趣的代码 here。
foreach (CrystalDecisions.Shared.ParameterField parameterField in reportDocument.ParameterFields)
{
parameterField.ParameterFieldUsage2 = ParameterFieldUsage2.ShowOnPanel;
}
不幸的是,就像那个线程的海报一样,这段代码对我不起作用。尝试将 ParameterFieldUsage2 属性 设置为 ShowOnPanel 时,系统抛出 System.NotSupportedException。
事实证明,会话一直是问题所在。无论出于何种原因,当报表存储在会话变量中时,您无法更新参数。
因此我不得不再次更改我的实现。
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;
}
就是这样。这就是我工作所需的全部。无需再担心 post 后背或会话。在我经历了一切来到这里之后,我不太明白这怎么会这么简单。但它有效。