水晶报表字段数量不定,有可能是5个有可能是50个如何动态增加字段?而不是事先将足够数量的栏位放到里面!

解决方案 »

  1.   

    /// <summary>
                /// 获取报表Viewer能够接受的注入参数集
                /// </summary>
                /// <returns></returns>
                public ParameterFields GetInjectParamFileds()
                {
                    try
                    {
                        ParameterFields tempInjectParamFileds = new ParameterFields(); //要返回的对象                    //轮巡参数
                        for (int i = 0; i < this.ReportInjectParams.Count; i++)
                        {
                            string tempKey = this.ReportInjectParams.Keys[i].Trim(); //Key
                            string tempValue = this.ReportInjectParams[tempKey].Trim(); //Value                        ParameterField tempParamField = new ParameterField(); //参数域(一项)
                            tempParamField.Name = tempKey; //参数域名字
                            ParameterDiscreteValue tempParamValue = new ParameterDiscreteValue(); //参数值对象
                            tempParamValue.Value = tempValue; //参数值
                            tempParamField.CurrentValues.Add(tempParamValue); //把参数值封装到参数域中才能传递(目前只封装一个值,可以封装多个值)                        //参数域项组装已成功,添加到注入参数集
                            tempInjectParamFileds.Add(tempParamField);
                        }                    //完成,返回
                        return tempInjectParamFileds;
                    }
                    catch
                    {
                        return null;
                    }
                }上面是程序的一段,用来获取报表参数,用来注入
                //创建并设置报表对象
                ReportDocument report = new ReportDocument();
                //报表文件物理全路径;报表数据源
                。。            //注入报表中去显示的参数
                ReportViewer1.ParameterFieldInfo = this.CurrentReportParam.GetInjectParamFileds();这是使用,如果不知道的类,查查MSDN