我是Crystal Reports的新手,我可能没有使用最新版本。我们使用VS2010/ASP.NET作为我们的主要编程环境,但是我们在VS2008中使用集成的Crystal Reports 2008设计器,所以在设计报表时我需要切换到2008年。通过在IDE中定义参数字段并将它们传递给我,我一直在参数中传递参数。我们拥有可用于排序的GridView的ASP.NET屏幕。数据显示在Crystal Report上,但我必须匹配它的排序方式。我在Google上查找了一些东西,发现this和this article。我无法弄清楚如何使用这些代码片段。我们最好的选择似乎是我们的“Report Controller”类,它是C#中Crystal Reports对象可用的唯一地方。一类如下所示:Crystal Reports以编程方式使用两个传入的参数进行排序
public class CRMOCContactsController : ReportingBase
{
public CRMOCContactsController(DataSet reportData, NameValueCollection reportParams)
{
// Create an instance of the Crystal Report.
this.Report = new Reports.CRMOCContacts();
// Get the data
this.ReportData = reportData;
foreach (string s in reportParams.AllKeys)
{
CRHelper.SetCurrentValuesForParameterField(this.Report.ParameterFields, s, reportParams[s]);
}
}
protected override void SetDataSource()
{
this.Report.Database.Tables["ContactRecord"].SetDataSource(this.ReportData.Tables["ContactRecord"]);
this.Report.Database.Tables["ContactSearchCriteria"].SetDataSource(this.ReportData.Tables["ContactSearchCriteria"]);
this.Report.Database.Tables["SSIFields"].SetDataSource(this.ReportData.Tables["SSIFields"]);
}
有谁看到我如何使用这些类型的类来做到这一点?一个参数将是排序的字段,另一个参数是方向。谢谢。在代码中显示我真的有帮助。
蒂亚戈,我的浏览器已经锁定,不允许我添加评论。唯一有Crystal代码的地方是自动生成的C#类,与每个报告一起使用。例如,上面引用的Reports.CRMOCContacts()类。这是由工具自动生成的,无法修改: // ---------------------------------- -------------------------------------------- // //此代码是由工具生成的。 //运行时版本:2.0.50727.3603 // //对此文件的更改可能会导致不正确的行为,如果 //代码被重新生成,将会丢失。 // // -------------------------------------------- ----------------------------------
有我参考的ReportDocument的唯一参考: public虚拟CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport(){0} 0 0 0 0 0 CRMOCContacts rpt = new CRMOCContacts(); rpt.Site = this.Site; return rpt; }
我想出了一些东西。如果我这样做,CRMOCContactsController中的代码可以是Crystal代码。报告为ReportDocument并添加这些库: using CrystalDecisions.Shared; using CrystalDecisions.ReportSource; using CrystalDecisions.CrystalReports.Engine;我可以这样做: FieldDefinition FieldDef = null ;; FieldDef = this.Report.Database.Tables [0] .Fields []; this.Report.DataDefinition.SortFields [0] .Field = FieldDef; this.Report.DataDefinition.SortFields [0] .SortDirection = CrystalDecisions.Shared.SortDirection.AscendingOrder;
我只是不知道如何在sortField中传递?什么格式?
它不适合我。该报告确实知道显示排序的数据集。 – 2011-01-13 01:18:36