总的来说,水晶报表的学习资料好象比较有限,
在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 "=";
        }

    }

}
posted on 2007-06-25 15:32  haitian  阅读(911)  评论(2编辑  收藏  举报