在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、跪求解决方案!