显示过滤器记录否则水晶报告中的所有记录

时间:2012-05-28 12:25:30

标签: c# asp.net crystal-reports report ext.net

我希望在页面加载时,报告应该显示所有记录。 现在,当我想通过datewise(组字段)显示过滤器记录时,即显示所有没有过滤器的记录,否则显示带过滤器的记录/。

当我想过滤数据

时,我的代码如下所示
 protected void click(object sender, EventArgs e)
        {

            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load(Server.MapPath("report.rpt"));
            cryRpt.SetDatabaseLogon("userid", "password", "server", "database");
            ParameterFieldDefinitions crParameterFieldDefinitions;
            ParameterFieldDefinition crParameterFieldDefinition;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value =Convert.ToDateTime( dtAppt.Text).ToShortDateString();
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["stdate"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
            CrystalReportViewer1.ReportSource = cryRpt;
            Checkbox1.Checked = false;

        }

enter image description here 如果条件要写什么,以便我可以获得所有记录以及在下面这行传递的内容?

crParameterDiscreteValue.Value =Convert.ToDateTime( dtAppt.Text).ToShortDateString();

2 个答案:

答案 0 :(得分:3)

当您想要显示所有记录时添加特殊值,即01/01/1900

crParameterDiscreteValue.Value ="19000101";

在公式

{?stdate} = '19000101' or {appointment.startdate} = {?stdate}

无需使用if else语句。

答案 1 :(得分:0)

诀窍是将“特殊值”传递给您的参数或创建一个新参数来覆盖。

“特殊值”示例将是01/01/1900:

然后在您的选择标准中:{?stdate} = '19000101' or {appointment.startdate} = {?stdate}

如果你去另一条路线创建一个布尔参数来覆盖:

然后在您的选择标准中:{?override} or {appointment.startdate} = {?stdate}