【问题标题】:Null Value Handling in ReportParameterReportParameter 中的空值处理
【发布时间】:2017-06-05 20:26:57
【问题描述】:

因此,在此应用程序中,最终用户在一个表单上输入所需的 RMA 信息,然后可以选择将其加载到报告视图中并打印。因为这个数据库是多年前放在一起的,所以空值位于 [修复区域] 列中。我需要的是弄清楚如果检测到空值,如何将“区域”的参数值设置为“未知”。下面是当前使用的方法的代码。

public void GenerateServiceReport(string[] RMArray, string TempDataset, DataTable Results)
    {

        serviceReportViewer.LocalReport.ReportPath = "D:\\vsprojects\\projects\\emsdashboard\\emsdashboard\\RMAServiceReport.rdlc";

        ReportParameter dateReceived = new ReportParameter("DateParameter", RMArray[0]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { dateReceived });
        ReportParameter rmaNumber = new ReportParameter("RMAParameter", RMArray[1]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { rmaNumber });
        ReportParameter workOrder = new ReportParameter("WorkOrderParameter", RMArray[2]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { workOrder });
        ReportParameter qty = new ReportParameter("qtyParameter", RMArray[3]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { qty });
        ReportParameter company = new ReportParameter("CompanyParameter", RMArray[4]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { company });
        ReportParameter customer = new ReportParameter("CustomerParameter", RMArray[5]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { customer });
        ReportParameter ecn = new ReportParameter("ecnParameter", RMArray[6]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { ecn });
        ReportParameter warranty = new ReportParameter("WarrantyParameter", RMArray[7]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { warranty });
        ReportParameter action = new ReportParameter("ActionParameter", RMArray[8]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { action });
        ReportParameter part = new ReportParameter("PartParameter", RMArray[9]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { part });
        ReportParameter area = new ReportParameter("AreaParameter", RMArray[10]);
        serviceReportViewer.LocalReport.SetParameters(new ReportParameter[] { area });

        serviceReportViewer.LocalReport.DataSources.Clear();
        serviceReportViewer.LocalReport.DataSources.Add(new ReportDataSource(TempDataset, Results));
        serviceReportViewer.RefreshReport();
    }

private void RMAServiceReport_Load(object sender, EventArgs e) {

        this.serviceReportViewer.RefreshReport();
        this.serviceReportViewer.RefreshReport();
        this.serviceReportViewer.RefreshReport();
    }

【问题讨论】:

  • 为什么要连续刷新报表3次?还需要刷新吗?
  • 如果你想在报表中显示一些特殊的值,那么你必须要么将条件放入 RDLC 中,要么在填充数据时准备适当的字符串。通常除了琐碎的条件外,我认为从 RDLC 中以易于使用的格式准备数据会更简单、更清晰。

标签: c# winforms reportviewer


【解决方案1】:

更改像这样声明area 变量行

ReportParameter area = new ReportParameter("AreaParameter", RMArray[10] ?? "unknown");

【讨论】:

  • 感谢所有回复的人。
猜你喜欢
  • 2014-02-09
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多