Winform中reportViewer报无法计算计算FilterExpression错误,求高手解答

yu_zhi_wei 2012-05-15 08:26:38
在reportviewer中 其中是动态生成的rdlc模板,其中模版参数也是对的、主要代码如下:
void GenerateReport()
{
IReportable nr = ReportFactory.CreateReport(m_Report.Type);
//nr.ReportType = m_Report.Type;
List<ReportColumn> cols = new List<ReportColumn>();
foreach (ZTEReportColumn column in m_VisibleColumns)
{
ReportColumn col = new ReportColumn();
col.Name = column.Name;
col.Desc = column.Description;
col.IsFilter = m_FilterColumns.Contains(column);
col.DataType = column.Type;
cols.Add(col);
}
nr.AddColumns(cols);
MemoryStream ms = nr.GenerateRdlc();
this.reportViewer1.Reset();
this.reportViewer1.LocalReport.LoadReportDefinition(ms);
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Report", m_DataTable));
SetParams();
}

public void SetParams()
{
ReportParameter[] parameters = new ReportParameter[m_Filters.Count + m_NumberFilters.Count*2 + m_TimeFilters.Count*2 + 2];
for (int i = 0; i < m_Filters.Count; i++)
{
parameters[i] = new ReportParameter(m_Filters[i].Column.Name, m_Filters[i].ParamValue);
}
for (int j = 0; j < m_NumberFilters.Count; j++)
{
// 这个用于过滤 当没有设置过滤条件 这个参数值默认为Int.Minvalue
parameters[j*2 + m_Filters.Count] = new ReportParameter(m_NumberFilters[j].Column.Name + "_Low", m_NumberFilters[j].Min);

// 这个用于过滤 当没有设置过滤条件 这个参数值默认为Int.Maxvalue
parameters[j*2 + m_Filters.Count + 1] = new ReportParameter(m_NumberFilters[j].Column.Name + "_High", m_NumberFilters[j].Max);
}
for (int k = 0; k < m_TimeFilters.Count; k++)
{
// 这个用于过滤 当没有设置过滤条件 这个参数值默认为DateTime.Minvalue
parameters[k*2 + m_Filters.Count + m_NumberFilters.Count*2] = new ReportParameter(m_TimeFilters[k].Column.Name + "_Low", m_TimeFilters[k].StartTime);

// 这个用于过滤 当没有设置过滤条件 这个参数值默认为DateTime.Maxvalue
parameters[k*2 + m_Filters.Count + m_NumberFilters.Count*2 + 1] = new ReportParameter(m_TimeFilters[k].Column.Name + "_High", m_TimeFilters[k].EndTime);
}
parameters[m_Filters.Count + m_NumberFilters.Count*2 + m_TimeFilters.Count*2] = new ReportParameter("CurrentTitle", m_Report.Name);
parameters[m_Filters.Count + m_NumberFilters.Count*2 + m_TimeFilters.Count*2 + 1] = new ReportParameter("CurrentUser", ModuleManager.Instance.Context.User.Name);
this.reportViewer1.LocalReport.SetParameters(parameters);
this.reportViewer1.RefreshReport();
}
执行后reportViewer出现错误、其错误信息为:无法计算FilterExpression、跪求解决方案!
...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
test2050 2012-05-15
  • 打赏
  • 举报
回复
调试看是哪一行代码出的错啊。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧