
本文共 1444 字,大约阅读时间需要 4 分钟。
最近的项目中,在把水晶报表进行绑定的部分移到某个具体类中时,出现了如下问题:
在数据量达到分页为三页以上后,水晶报表自带的分页功能无效了。即,第一页、第二页正常,在第二页中点击后一页无法转到第三页。在最后一页点击上一页就自动跳转到第一页。也就是,水晶报表翻页无效。
在网上搜索一直没有找到相关问题解决方法。最后只能把原来的在页面中处理的方式移了过来/// <summary> /// 设置查看器查询参数 /// </summary> /// <param name="cryView">查看器,这个变量就在页面中的那个CrystalReportViewer 控件</param> /// <param name="htParam">参数,说明:使用的是哈希表,键值为水晶报表中的参数名,内容值就是为需要传给水晶报表的参数</param> /// <returns></returns> public virtual bool SetReportParam(CrystalDecisions.Web.CrystalReportViewer cryView, System.Collections.Hashtable htParam) { // TODO: 添加 AbstractReport.SetReportParam 实现 //查看器控件所需的变量。 if (paramFields==null) { paramFields = new ParameterFields (); } rangeVal = new ParameterRangeValue (); // 循环设置参数是具有多个值的离散参数。 // 设置参数字段的名称,它必须和报表中的参数相符。 try { for(int i=0;i<RptDoc.ParameterFields.Count;i++) {
//如此设置参数可以解决翻页只翻二页的问题 paramField = RptDoc.ParameterFields[i]; //获取参数,如果当前参数是否为null,如果不为null,则进行参数设置,(针对有子报表的参数) object objParam=htParam[paramField.Name.ToLower()]; if(objParam!=null) this.RptDoc.SetParameterValue(paramField.Name.ToString(),objParam);
//原来的参数设置方式,只能翻二页// paramField = RptDoc.ParameterFields[i];// paramField.CurrentValues.Clear();// object objParam=htParam[paramField.Name.ToLower()];// if(objParam!=null)// paramField.CurrentValues.AddValue(objParam);// paramFields.Add (paramField);
}
// 将参数字段集合放入查看器控件。 // cryView.ParameterFieldInfo = paramFields; } catch(Exception ex) { string s=ex.Message; return false; } return true; }
问题解决。
发表评论
最新留言
关于作者
