Search code examples
c#crystal-reports

How do I set a Range Parameter on the web form that will be applied on the crystal report?


I have just recently created a WebForm which consists of 2 forms, the first form consists of just a button to redirect to the second form which then opens up the Crystal Report.

All this is working fine and properly but now I would want to insert a Parameter(filtering a range) on the first WebForm so that it would be applied directly onto the crystal report once I open it.

Any ideas of what code I need to include? Any help would be great.

EDIT:

        ReportDocument cryRpt = new ReportDocument();
        cryRpt.Load(Server.MapPath("CrystalReportCustomerInfo.rpt"));
        CrystalReportCustomerinfo.ReportSource = cryRpt;

        ParameterFieldDefinitions FirstParameterFieldDefinitions;
        ParameterFieldDefinition FirstParameterFieldDefinition;
        ParameterValues FirstParameterValues = new ParameterValues();
        ParameterDiscreteValue FirstParameterDiscreteValue = new ParameterDiscreteValue();
        FirstParameterDiscreteValue.Value = Txt1.Text;
        FirstParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
        FirstParameterFieldDefinition = FirstParameterFieldDefinitions["FromID"];
        FirstParameterValues = FirstParameterFieldDefinition.CurrentValues;
        FirstParameterValues.Clear();
        FirstParameterValues.Add(FirstParameterDiscreteValue);
        ParameterFieldDefinitions SecondParameterFieldDefinitions;
        ParameterFieldDefinition SecondParameterFieldDefinition;
        ParameterValues SecondParameterValues = new ParameterValues();
        ParameterDiscreteValue SecondParameterDiscreteValue = new ParameterDiscreteValue();
        SecondParameterDiscreteValue.Value = Txt2.Text;
        SecondParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
        SecondParameterFieldDefinition = SecondParameterFieldDefinitions["ToID"];
        SecondParameterValues = SecondParameterFieldDefinition.CurrentValues;
        SecondParameterValues.Clear();
        SecondParameterValues.Add(SecondParameterDiscreteValue);
        FirstParameterFieldDefinition.ApplyCurrentValues(FirstParameterValues);
        SecondParameterFieldDefinition.ApplyCurrentValues(SecondParameterValues);
        CrystalReportCustomerinfo.ReportSource = cryRpt;
        CrystalReportCustomerinfo.RefreshReport(); 
    }

Solution

  • Try it

    private void btnReport_Click(object sender, EventArgs e)
        {
            ReportDocument rpt = new ReportDocument();
            rpt.Load(Server.MapPath("~/CrystalReportCustomerInfo.rpt"));
            ParameterFieldDefinitions FirstParameterFieldDefinitions;
            ParameterFieldDefinition FirstParameterFieldDefinition;
            ParameterValues FirstParameterValues = new ParameterValues();
            ParameterDiscreteValue FirstParameterDiscreteValue = new ParameterDiscreteValue();
            FirstParameterDiscreteValue.Value = Convert.ToInt32(from.Text);
            FirstParameterFieldDefinitions = rpt.DataDefinition.ParameterFields;
            FirstParameterFieldDefinition = FirstParameterFieldDefinitions["FromID"];
            FirstParameterValues = FirstParameterFieldDefinition.CurrentValues;
            FirstParameterValues.Clear();
            FirstParameterValues.Add(FirstParameterDiscreteValue);
            ParameterFieldDefinitions SecondParameterFieldDefinitions;
            ParameterFieldDefinition SecondParameterFieldDefinition;
            ParameterValues SecondParameterValues = new ParameterValues();
            ParameterDiscreteValue SecondParameterDiscreteValue = new ParameterDiscreteValue();
            SecondParameterDiscreteValue.Value = Convert.ToInt32(to.Text); ;
            SecondParameterFieldDefinitions = rpt.DataDefinition.ParameterFields;
            SecondParameterFieldDefinition = SecondParameterFieldDefinitions["ToID"];
            SecondParameterValues = SecondParameterFieldDefinition.CurrentValues;
            SecondParameterValues.Clear();
            SecondParameterValues.Add(SecondParameterDiscreteValue);
            FirstParameterFieldDefinition.ApplyCurrentValues(FirstParameterValues);
            SecondParameterFieldDefinition.ApplyCurrentValues(SecondParameterValues);
            CrystalReportViewer1.ReportSource = rpt;
    }