将ReportParameters传递回方法

本文关键字:方法 ReportParameters | 更新日期: 2023-09-27 17:54:02

我有一个应用程序,它使用本地存储的rdl进行所有报告。我有两个表单,一个是包含TabPageControl的简单查看器,另一个是包含控件的FLP,用户可以使用它来选择报告参数。我们计划有超过30个选项,但目前我们只有大约5个(某些显示某些报告,其余是隐藏的)。

我遇到的问题是,我需要有一些方法来获得他们从列表或集合中选择的选项。我现在使用的方法是

public void AddReportToViewer(string reportName, List<ReportParameter> parameterList = null)
    {
        TabPage newPage = new TabPage();      
        ReportViewer reportViewer = new ReportViewer();
        newPage.Text = reportName;
        newPage.Controls.Add(reportViewer);
        tbcReports.TabPages.Add(newPage); //adding the report viewer to page, should do this at the end of the method
        reportViewer.Reset();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "MyPath/reportName";
        ReportDataSource rds = new ReportDataSource();
        //parse parameters to individual objects to use with method calls
        int parameterEmployeeID = 0;
        int parameterStoreID = 0;
        List<int> parameterStoreIDs = null;
        DateTime parameterFromDate = DateTime.Now;
        DateTime parameterToDate = DateTime.Now;
        //Use parameters to get objects, just one here, but we have multiple
        List<EmployeeTimeclockReportObjects> timeclock = reportBL.getEmployeeTimeclock(parameterEmployeeID, parameterStoreID, parameterFromDate, parameterToDate);
        reportBindingSource.DataSource = timeclock;
        rds = new ReportDataSource("TimeclockEntries", reportBindingSource);
        reportViewer.LocalReport.DataSources.Add(rds);
        reportViewer.RefreshReport();
        reportViewer.Dock = DockStyle.Fill;            
    }

这一切都工作,但这是我需要帮助的地方

        int parameterEmployeeID = 0;
        int parameterStoreID = 0;
        List<int> parameterStoreIDs = null;
        DateTime parameterFromDate = DateTime.Now;
        DateTime parameterToDate = DateTime.Now;

我需要从报表参数列表中删除这些值,以便在数据填充方法中使用它们。例如,我正在做这样的事情:

int parameterEmployeeID = Convert.ToInt32(parameterList[parameterList.FindIndex(x => x.Name == "employeeID")].Values[0]);

但是后来我在List<int> parameterStoreIDs上遇到了问题,因为我不能将StringCollection转换为整数列表。

有没有人对a)将StringCollection转换为整数列表有任何建议,或者b)我可以尝试从第二种形式获得信息,除了List<ReportParameters> ??

将ReportParameters传递回方法

对于问题(a),考虑如下:

我不清楚代码中的哪个变量是StringCollection,所以为了示例的缘故,我只是称它为strings

List<int> ints = strings.Cast<string>(s => Convert.ToInt32(s)).ToList();