Filtering and Sorting Record With DataTable

Posted at : Jun/13/2007
7758 Views

Seperti yang telah kita ketahui sebelumnya bahwa Crystal Reports dapat menampilkan data yang diambil dari berbagai sumber data seperti DataSet, DataTable, DataReader, dan class yang implement IEnumerable. Pada artikel kali ini saya akan memperlihatkan contoh bagaimana caranya kita dapat melakukan filtering data dan sorting pada Crystal Report dengan menggunakan DataTable.

Sebenarnya simple sekali, karena DataTable sudah mempunyai properti yang return valuenya berupa DataView. Dari DataView tersebut kita gunakan properti RowFilter untuk filtering record dan Sorting untuk mengurutkan data berdasarkan kolom tertentu.

Contoh report yang dibuat ini mengambil data dari database AdventureWorks untuk view Sales.vIndividualCustomer untuk beberapa kolom yang dapat anda lihat di code. Kemudian di form tersebut disediakan combobox untuk filtering dan sorting record. Mari kita lihat saja code lengkapnya dan screen shot ketika aplikasi tersebut dijalankan.

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;

namespace CrystalReportsApp
{
public partial class frmReport : Form {

DataTable dtSales = new DataTable();
rptSortByCR rpt = new rptSortByCR();

public frmReport()
{
InitializeComponent();
}

private void SetReportDataSource()
{
using(SqlConnection sqlConn = new SqlConnection(
@"Database=AdventureWorks;Uid=sa;Pwd=sql2005;Server=.\SQL2005"))
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = "Select CustomerID,FirstName," +
"Phone,City,CountryRegionName From Sales.vIndividualCustomer";

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

rpt.SetDataSource(dtSales);
crystalReportViewer1.ReportSource = rpt;

DataTable dtCountry = new DataTable("distinctCountry");
dtCountry = dtSales.DefaultView.ToTable(true,
dtSales.Columns["countryregionname"].ColumnName);
cboCountry.DataSource = dtCountry;
cboCountry.DisplayMember = "countryregionname";

foreach (DataColumn aColumn in dtSales.Columns)
{
cboSort.Items.Add(aColumn.ColumnName);
}
}
}
}
private void frmReport_Load(object sender, EventArgs e)
{
SetReportDataSource();
}

private void btnSearch_Click(object sender, EventArgs e)
{
dtSales.DefaultView.RowFilter = "CountryRegionName = '" +
cboCountry.Text + "'";
rpt.SetDataSource(dtSales.DefaultView);
crystalReportViewer1.ReportSource = rpt;
}

private void btnSort_Click(object sender, EventArgs e)
{
dtSales.DefaultView.Sort = cboSort.Text;
rpt.SetDataSource(dtSales.DefaultView);
crystalReportViewer1.ReportSource = rpt;
}

}
}
 

 


ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Co-Founder & IT Trainer at Native Enterprise | Microsoft Azure Data Scientist | IBM RAG & Agentic AI | IBM Data Science & Data Analyst | Python Certified (PCEP, PCAP) | MOS, MTA, Xamarin Certified, ex MCT | ex MVP

CERTIFICATIONS

Microsoft Certified Associate
IBM RAG and Agentic AI Professional
IBM Data Science Professional IBM Data Analyst Professional
PCAP Associate Python Programmer Certified PCEP Entry Level Python Programmer Certified
Xamarin Certified
MOS 2007
MCPD MCTS
MCAD.NET

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  X Twitter Facebook  Instagram  LinkedIn

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2026   Rully Yulian MF   All rights reserved.