Change Sort Order in Group Section Dynamically

Created at : Jun/13/2007  
1571 Views   0 Comments

Bagaimana caranya merubah sort order record yang tampil di crystal report viewer dari sebuah file crystal reports yang di kelompokkan oleh field tertentu? Apakah kita dapat melakukannya dengan menggunakan properti Sort dari DataView? Hal tersebut tidak dapat kita lakukan meskipun SQL statementnya kita rubah, hal tersebut terjadi karena ketika kita design reporting maka sort ordernya sudah ditentukan. Jadi apa yang harus kita lakukan?

Crystal Report sudah menyediakan class yang berhubungan dengan pengaturan Sort order record, sehingga kita bisa merubahnya secara runtime pada data yang sudah di kelompokkan berdasarkan kolom tertentu. Class tersebut berada di dalam namespace CrystalDecisions.CrystalReports.Engine.

Pertama kita definisikan terlebih dahulu variabel dari SortFields class yang digunakan untuk mendapatkan informasi field yang digunakan oleh crystal report sebagai kolom yang digunakan untuk sorting. Setelah itu lakukan looping terhadap collection field yang terdapat di dalam class tersebut. Dari sana kita tentukan SortFieldType nya apakah Group atau Record, kalau Group cek terlebih dahulu name kolom sort ordernya. Setelah itu baru bisa kita rubah sort order record berdasarkan group tersebut, apakah Ascending atau Descending...Here's the complete code :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;

namespace CrystalReportsApp
{
public partial class frmGroupBy : Form {
DataTable dtCustomers = new DataTable();
rptGroupBy rpt = new rptGroupBy();

public frmGroupBy()
{
InitializeComponent();
}

private void SetReportDataSource()
{
using (SqlConnection sqlConn = new SqlConnection(
@"Database=Northwind2005;Uid=sa;Pwd=sql2005;Server=.\SQL2005"))
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText =
"Select * From Customers" +
" Where Region Is Not Null And Country Is Not Null";

if (sqlConn.State == ConnectionState.Closed) sqlConn.Open();
dtCustomers.Load(sqlCmd.ExecuteReader());

rpt.SetDataSource(dtCustomers);
crystalReportViewer1.ReportSource = rpt;
}
}
}

private void SortReport(bool ASC)
{
SortFields allSortField;
allSortField = rpt.DataDefinition.SortFields;
foreach (SortField aSortField in allSortField)
{
if (ASC)
{
if (aSortField.SortType ==
CrystalDecisions.Shared.SortFieldType.GroupSortField)
{
if (aSortField.Field.Name == "Region")
{
aSortField.SortDirection =
CrystalDecisions.Shared.SortDirection.AscendingOrder;
}
}
}
else {
if (aSortField.SortType ==
CrystalDecisions.Shared.SortFieldType.GroupSortField)
{
if (aSortField.Field.Name == "Region")
{
aSortField.SortDirection =
CrystalDecisions.Shared.SortDirection.DescendingOrder;
}
}
}
}
crystalReportViewer1.ReportSource = rpt;
crystalReportViewer1.Refresh();
}

private void frmGroupBy_Load(object sender, EventArgs e)
{
SetReportDataSource();
}

private void btnSortASC_Click(object sender, EventArgs e)
{
SortReport(true);
}

private void btnSortDesc_Click(object sender, EventArgs e)
{
SortReport(false);
}
}
}

 


[Comments]

[Write your comment]
Name (required)
URL (optional)
Example : http://www.yulianmf.com  
Comment

L902
Input code above below (Case Sensitif) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 2235 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2192 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 1523 times  
DataGridView Grouping : Downloaded 1243 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1232 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise - IT Training 
Native Enterprise Facebook Group 
My Facebook 
My LinkedIn 
Syndication (RSS 2.0) 
Powered By 
Native Enterprise News