将参数传递给报表查看器中的报表,问题

时间:2011-03-23 14:37:41

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

我在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;

这是Page的CodeBehind

当我的Table控件生成一些数据时,它会填充[status +“EURO”]

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

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

1 个答案:

答案 0 :(得分:0)

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

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