水晶报表分页问题--在数据量达到分页为三页以上后,水晶报表自带的分页功能无效

最近的项目中,在把水晶报表进行绑定的部分移到某个具体类中时,出现了如下问题:

在数据量达到分页为三页以上后,水晶报表自带的分页功能无效了。
即,第一页、第二页正常,在第二页中点击后一页无法转到第三页。
在最后一页点击上一页就自动跳转到第一页。也就是,水晶报表翻页无效。

在网上搜索一直没有找到相关问题解决方法。
最后只能把原来的在页面中处理的方式移了过来
/// <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;
   
  }

 

问题解决。

posted @ 2008-01-23 18:02  DotNet菜园  阅读(4733)  评论(10编辑  收藏  举报