【水晶报表内功心法】--信手拈来,掌控对象 之 多值参数传入
在前文【水晶报表内功心法】--信手拈来,掌控对象 中,讲解了参数的输入方法。
myReport.SetParameterValue(参数名称,参数值,[子报表名称]);
比如我们这样传参数值:
myReport.SetParameterValue("x1","我是参数值");
但是如何传入多值参数,或者是区域值参数呢。
实质上我们再来看一下SetParameterValue方法,
value 是可以是一个ParameterValues的,所以解决方法也来了。
我们首先建立一个多值参数px,一个区域值参数py。
注意如果直接把px拖到模板上,会只显示第一个值。而py则直接不显示。
所以为了验证效果,做两个公式
fx: join({?px},',') //将值用,组合成一个字串
fy:Minimum ({?py}) //取最小的端点
这两个公式主要是为了验证显示效果的,与代码无关。
代码如下:
这个是通过ReportDocument来传值的。
当然也可以传给CrystalReportViewer。
myReport.SetParameterValue(参数名称,参数值,[子报表名称]);
比如我们这样传参数值:
myReport.SetParameterValue("x1","我是参数值");
但是如何传入多值参数,或者是区域值参数呢。
实质上我们再来看一下SetParameterValue方法,
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);
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。