【问题标题】:Passing parameter to report in Report Viewer, problem将参数传递给报表查看器中的报表,问题
【发布时间】:2011-03-23 14:37:41
【问题描述】:

我的 Report.rdl 有表格,我想像 GridView 一样动态生成它

        Reports.dsReport ds = new dsReport();
        Reports.dsReportTableAdapters.sp_PaymentsTableAdapter daInformation =
            new dsReportTableAdapters.sp_PaymentsTableAdapter();
        try
        {               
            daInformation .Fill(ds.sp_Procedure
                                               , ID
                                               , Name
                                               , Number
                                               , startDate
                                               , endDate
                                               , payerID);
        }
        catch { }          

        DataTable dtPaymentInfo = ds.Tables["sp_Payments"];

        List<ReportParameter> parameters = new List<ReportParameter>();

        parameters.Add(new ReportParameter("PeriodStart", startDate.Value.ToString("yyyy-MM-dd HH:mm"));
        parameters.Add(new ReportParameter("PeriodEnd", endDate.Value.ToString("yyyy-MM-dd HH:mm"));

        foreach(DataTable item in dtPaymentInfo.Rows)
        {
            for(int i = 0; i < item.Rows.Count; i++)
            {
               int status =  (int)item.Rows[i][2];

               string paymentName;
               if(status == 0)
                  paymentName=status.ToString() + " EURO";                   
               if(status == 1)
                  paymentName=status.ToString() + " DOLLAR";  
               if(status == 2)
                  paymentName=status.ToString() + " Pound";    

            parameters.Add(new ReportParameter("PaymentName", paymentName);
            }

        }


        rpvPaymentInformation.LocalReport.SetParameters(parameters);

        ReportDataSource rds = new ReportDataSource();
        rds.Name = "DataSet1";
        rds.Value = dtPaymentInfo;

        rpvPaymentInformation.LocalReport.DataSources.Clear();
        rpvPaymentInformation.LocalReport.DataSources.Add(rds);
        rpvPaymentInformation.LocalReport.Refresh();

        rpvPaymentInformation.ShowReportBody = true;

这是页面的代码隐藏

当我的表格控件生成一些数据时,它会填充 [status + "EURO"]

但在数据库中状态也有 1、2 个值。

我该如何解决这个问题? :(

【问题讨论】:

  • 你能改写你问题的最后一部分吗?不是很清楚问题是什么。
  • 表格控件显示状态字段的方式有问题吗?还是您发送的参数包含“DOLLAR”和“Pound”值导致问题?
  • @ Bala R 在数据库的表中有一个 Int 类型的状态字段,并且在使用 reportviewer 的 asp 页面中,如果 status = 0 则要过滤这个状态status =1 status + " Dollar" and last if status = 3 status + "pound" 如果可能的话,我想用报告参数来做。问题是在报告中只显示状态+“欧元”但在表格中也有状态为 1 和 2 值并且必须显示状态+“美元”和状态+“英镑”,但它没有这样做,尽管我检索了这样数据表中的值(1 或 2)
  • @Judah Sali 从表中检索数据并且它正在工作。但是当我将此添加到报告参数“parameters.Add(new ReportParameter("PaymentName", paymentName)”之后,当页面在报告中呈现时只显示“0 Euro”,因为在数据库状态列中第一条记录是0。但是作为我说过也有值 1 和 2。
  • 你应该考虑重写你原来的问题,因为仍然没有发现明显的问题。

标签: asp.net reporting-services reporting reportviewer report


【解决方案1】:

目前还不清楚您要做什么,但我注意到您多次将参数PaymentName 添加到报告参数中。我很确定您最终只是添加到报告中的第一个或最后一个参数,而不是全部三个。

您可能正在尝试向参数添加多个值。如果这是您想要的,那么您最好将您的参数作为报表数据源的一部分包含在表格中。请参阅此处了解如何将表格用作多值参数:http://www.duttonsoftware.com/2008/09/25/easy-multi-value-parameters-in-sql-server-reporting-services/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多