将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>
??
对于问题(a),考虑如下:
我不清楚代码中的哪个变量是StringCollection
,所以为了示例的缘故,我只是称它为strings
。
List<int> ints = strings.Cast<string>(s => Convert.ToInt32(s)).ToList();