如果参数字段是用在子报表中,需要在设置参数值时显式指明,下面这个方法就是这样的。/// <summary>
/// 设置参数值
/// </summary>
/// <param name="discreteValue">参数值</param>
/// <param name="ParameterName">参数名称</param>
/// <param name="IsSubreport">该参数是否属于子表</param>
/// <param name="SubReportName">子表名称,无子表输入""</param>
private void SetParameterValue(CrystalDecisions.Shared.ParameterDiscreteValue discreteValue,string ParameterName,bool IsSubreport,string SubReportName)
{
CrystalDecisions.Shared.ParameterField parameterField = new CrystalDecisions.Shared.ParameterField();
parameterField.ParameterFieldName = ParameterName;
if(IsSubreport)
parameterField.ReportName = SubReportName;
parameterField.CurrentValues.Add(discreteValue);
this.crvMain.ParameterFieldInfo.Add(parameterField);
}
/// 设置参数值
/// </summary>
/// <param name="discreteValue">参数值</param>
/// <param name="ParameterName">参数名称</param>
/// <param name="IsSubreport">该参数是否属于子表</param>
/// <param name="SubReportName">子表名称,无子表输入""</param>
private void SetParameterValue(CrystalDecisions.Shared.ParameterDiscreteValue discreteValue,string ParameterName,bool IsSubreport,string SubReportName)
{
CrystalDecisions.Shared.ParameterField parameterField = new CrystalDecisions.Shared.ParameterField();
parameterField.ParameterFieldName = ParameterName;
if(IsSubreport)
parameterField.ReportName = SubReportName;
parameterField.CurrentValues.Add(discreteValue);
this.crvMain.ParameterFieldInfo.Add(parameterField);
}
SubrptDateRangeParameter crrptdoc;
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues;
ParameterRangeValue crParameterRangeValue;
crrptdoc = new SubrptDateRangeParameter();
crParameterFieldDefinitions = crrptdoc.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["Order Date Range"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterRangeValue = new ParameterRangeValue();
crParameterRangeValue.EndValue = "1/1/1997";
crParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
crParameterRangeValue.StartValue = "12/20/1997";
crParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
crParameterValues.Add(crParameterRangeValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
crystalReportViewer1.ReportSource = crrptdoc;