【水晶报表内功心法】--信手拈来,掌控对象 之 多值参数传入

在前文 【水晶报表内功心法】--信手拈来,掌控对象 中,讲解了参数的输入方法。
myReport.SetParameterValue(参数名称,参数值,[子报表名称]);
比如我们这样传参数值:
myReport.SetParameterValue("x1","我是参数值");

但是如何传入多值参数,或者是区域值参数呢。
实质上我们再来看一下SetParameterValue方法,
Title

public virtual void SetParameterValue(string name, object val, string subreport)
    CrystalDecisions.CrystalReports.Engine.ReportDocument 的成员

摘要:
设置子报表中的参数字段的当前值。值可以是基元、ParameterValue、上述两种类型中某一种的数组或 ParameterValues 集合。

参数:
name: 参数字段的名称。
value: 表示一个有效的参数值。可以是基元、ParameterValue、上述两种类型中某一种的数组或 ParameterValues 集合。
subreport: 参数字段所属的子报表的名称。



value 是可以是一个ParameterValues的,所以解决方法也来了。

我们首先建立一个多值参数px,一个区域值参数py。
注意如果直接把px拖到模板上,会只显示第一个值。而py则直接不显示。
所以为了验证效果,做两个公式
fx: join({?px},',') //将值用,组合成一个字串
fy: Minimum ({?py})  //取最小的端点
这两个公式主要是为了验证显示效果的,与代码无关。

代码如下:
 1  // 多值
 2          ParameterDiscreteValue pv;
 3          ParameterValues pvs  =   new  ParameterValues();
 4          
 5           for  ( int  i  =   0 ; i  <   5 ; i ++ )
 6          {
 7              pv  =   new  ParameterDiscreteValue();
 8              pv.Value  =  i.ToString();
 9              pvs.Add(pv);
10 
11          }
12          
13          myReport.SetParameterValue( " px " , pvs);
14 
15           // 区域值
16          pvs  =   new  ParameterValues();
17          ParameterRangeValue pv1 = new  ParameterRangeValue();
18          pv1.StartValue = 100 ;
19          pv1.EndValue  =   200 ;
20          pvs.Add(pv1);
21          myReport.SetParameterValue( " py " , pvs);

这个是通过ReportDocument来传值的。
当然也可以传给CrystalReportViewer。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值