将 ReportParameters 传回方法

Passing ReportParameters back to method

我有一个应用程序使用本地存储的 RDL 进行所有报告。我有两种形式,一种是包含 TabPageControl 的简单查看器,另一种是 FLP 控件,用户可以使用它来 select 报告参数。我们计划拥有 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> 之外我可以尝试从第二种形式获取信息的其他任何事情有任何建议? ?

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

我不清楚代码中的哪个变量是 StringCollection,因此为了示例起见,我将其称为 strings.

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