我希望在页面加载时,报告应该显示所有记录。 现在,当我想通过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;
}
如果条件要写什么,以便我可以获得所有记录以及在下面这行传递的内容?
crParameterDiscreteValue.Value =Convert.ToDateTime( dtAppt.Text).ToShortDateString();
答案 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}