总的来说,水晶报表的学习资料好象比较有限,
在VS2005中自带的Crystal Report的例子都还不错,很值得去学习参考。
但是我现在发现VS2005中自带的Crystal Report的一个很重要的例子,
CS_Web_CRVObjMod_FilteringData(即目录TutorialSampleCodeProjects下的例子)
是对数据进行筛选的例子,好象是有问题,未能实现预想的功能。
觉得在WEB上对数据报表进行筛选在实际应用中是非常重要的,其自带例子好象就只有这个是讲解怎么在WEB上对报表数据进行筛选。
但是这个例子确不对,这个例子没有实现对数据进行筛选!
这个例子不管填了什么条件 点击Redisplay Report Button 的时候得到的数据却都是所有的数据。
筛选的条件根本就没有起到作用。
我去仔细看了代码,好象也没什么发现问题啊,现在手上有个项目要用到这样的数据筛选,真是百思不得其解啊。有哪位朋友做过从WEB页面上对报表数据进行筛选的吗??请指点啊。
附上代码:
public partial class _Default : System.Web.UI.Page
{
private void ConfigureCrystalReports()
{
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
selectOperatorList.DataBind();
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
if (!IsPostBack)
{
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
string selectFormula = "{Customer.Last Year's Sales} > 11000.00 " + "AND Mid({Customer.Customer Name}, 1, 1) = \"A\"";
crystalReportViewer.SelectionFormula = selectFormula;
selectOperatorList.DataBind();
}
string reportPath = Server.MapPath("CustomersBySalesName.rpt");
crystalReportViewer.ReportSource = reportPath;
}
private void Page_Init(object sender, EventArgs e)
{
ConfigureCrystalReports();
}
protected void redisplay_Click(object sender, EventArgs e)
{
string selectedOperator = GetSelectedCompareOperator();
string selectFormula = "{Customer.Last Year's Sales} > " + lastYearsSales.Text
+ " AND Mid({Customer.Customer Name}, 1, 1) " + selectedOperator + " \"" + customerName.Text + "\"";
crystalReportViewer.SelectionFormula = selectFormula;
crystalReportViewer.ReportSource = Server.MapPath("CustomersBySalesName.rpt");
}
private string GetSelectedCompareOperator()
{
switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
return "=";
case CeComparisonOperator.LessThan:
return "<";
case CeComparisonOperator.GreaterThan:
return ">";
case CeComparisonOperator.LessThan_or_EqualTo:
return "<=";
case CeComparisonOperator.GreaterThan_or_EqualTo:
return ">=";
case CeComparisonOperator.Not_EqualTo:
return "<>";
default:
return "=";
}
}
}
{
private void ConfigureCrystalReports()
{
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
selectOperatorList.DataBind();
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
if (!IsPostBack)
{
selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
string selectFormula = "{Customer.Last Year's Sales} > 11000.00 " + "AND Mid({Customer.Customer Name}, 1, 1) = \"A\"";
crystalReportViewer.SelectionFormula = selectFormula;
selectOperatorList.DataBind();
}
string reportPath = Server.MapPath("CustomersBySalesName.rpt");
crystalReportViewer.ReportSource = reportPath;
}
private void Page_Init(object sender, EventArgs e)
{
ConfigureCrystalReports();
}
protected void redisplay_Click(object sender, EventArgs e)
{
string selectedOperator = GetSelectedCompareOperator();
string selectFormula = "{Customer.Last Year's Sales} > " + lastYearsSales.Text
+ " AND Mid({Customer.Customer Name}, 1, 1) " + selectedOperator + " \"" + customerName.Text + "\"";
crystalReportViewer.SelectionFormula = selectFormula;
crystalReportViewer.ReportSource = Server.MapPath("CustomersBySalesName.rpt");
}
private string GetSelectedCompareOperator()
{
switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)
{
case CeComparisonOperator.EqualTo:
return "=";
case CeComparisonOperator.LessThan:
return "<";
case CeComparisonOperator.GreaterThan:
return ">";
case CeComparisonOperator.LessThan_or_EqualTo:
return "<=";
case CeComparisonOperator.GreaterThan_or_EqualTo:
return ">=";
case CeComparisonOperator.Not_EqualTo:
return "<>";
default:
return "=";
}
}
}