我有一个视图,它返回我的 SQL Server 2012 数据库中的数据视图。视图中的字段之一是“SprintId”。
我有一个 C# WinForms 应用程序,使用 VS2012,它有一个表单,并且在该表单上是一个 reportViewer。
当我运行它时,我得到了我期望的数据。
现在,我需要将 SprintId 列过滤为某个值。(所以,添加一个WHERE SprintId = 37'
)
我认为,在 rdlc 文件上添加一个参数是正确的方法。
因此,我添加了一个参数,将其命名为“SprintId”,将“Type”设置为 Integer,甚至将默认值设置为 37。
不过,我不确定在哪里将此参数分配为 Where 子句。我有参数,但没有使用它。我在哪里将该参数分配给视图?
此外,我需要从我的表单中设置参数。所以,我添加了以下代码:
ReportParameterCollection reportParameters = new ReportParameterCollection();
reportParameters.Add(new ReportParameter("SprintId", "37"));
this.reportViewer1.LocalReport.SetParameters(reportParameters);
然后默认代码立即触发:
this.vwSprintDailyBreakdownTableAdapter.Fill(this.Scrum_MasterDataSet.vwSprintDailyBreakdown);
this.reportViewer1.RefreshReport();
但是,只要我添加参数代码 - 我的报告完全是空白的。我究竟做错了什么?
编辑:
我试过 Romano 的代码,这是我现在使用的代码,但是当我运行它时,我得到一个完全空白的报告。
var result = new DataTable();
DataRow[] res = this.Scrum_MasterDataSet.vwSprintDailyBreakdown.Select("SprintId = 37");
foreach (DataRow row in res)
{
result.ImportRow(row);
}
this.vwSprintDailyBreakdownTableAdapter.Fill((Scrum_MasterDataSet.vwSprintDailyBreakdownDataTable)result);
this.reportViewer1.RefreshReport();
并捕获以下异常:{“无法将'System.Data.DataTable'类型的对象转换为'vwSprintDailyBreakdownDataTable'。”}