【发布时间】:2011-01-11 18:48:57
【问题描述】:
我是 Crystal Reports 的新手,我可能没有使用最新的。我们使用VS2010/ASP.NET作为我们的主要编程环境,但是我们在VS2008中使用了集成的Crystal Reports 2008设计器,所以我在设计报表时需要切换到2008。我一直在通过在 IDE 中定义参数字段然后将它们传入来将参数传递给报告。我们有带有可排序的 GridView 的 ASP.NET 屏幕。数据显示在水晶报表上,但我必须匹配它的排序方式。我在谷歌上查了一下,发现this 和this article。我不知道如何使用这些代码 sn-ps。我们最好的选择似乎是我们的“报表控制器”类,这是 C# 中唯一可以使用 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"]);
}
有谁知道我如何使用这些类型的类来做到这一点?一个参数是要排序的字段,另一个参数是方向。谢谢。向我展示代码真的很有帮助。
Tiago,我的浏览器被锁定,不允许我添加评论。 Crystal 代码的唯一位置是与每个报告一起自动生成的 C# 类。例如,上面引用的 Reports.CRMOCContacts() 类。这是由工具自动生成的,无法修改: //------------------------------------------------ ------------------------------ // // 此代码由工具生成。 // 运行时版本:2.0.50727.3603 // // 对该文件的更改可能会导致不正确的行为,并且会丢失 // 重新生成代码。 // //------------------------------------------------ ------------------------------
我看到的唯一引用是 ReportDocument: 公共虚拟 CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport() { CRMOCContacts rpt = 新的 CRMOCContacts(); rpt.Site = 这个.Site; 返回 rpt; }
我想通了。如果我将 this.Report 视为 ReportDocument 并添加以下库,则 CRMOCContactsController 中的代码可以是 Crystal 代码: 使用 CrystalDecisions.Shared; 使用 CrystalDecisions.ReportSource; 使用 CrystalDecisions.CrystalReports.Engine;
然后我可以这样做: 字段定义字段定义 = 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?什么格式?
【问题讨论】:
标签: c# crystal-reports