我是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