Grouping Data In DataGridView

Posted at : Apr/03/2007
14993 Views

Untuk melakukan pengelompokkan data berdasarkan kategori tertentu dalam sebuah datagridview diperlukan beberapa langkah. Langkah-langkahnya bisa kita lakukan sbb :

  1. Lakukan pengelompokkan data pada tabel / view dengan menggunakan "grouping" keyword dan "rollup" keyword pada SQL statement untuk membuat summary data.
  2. Tampilkan data tersebut via datasource control di datagridview, gunakan beberapa kolom yang akan ditampilkan saja.
  3. Tambahkan event handler untuk event "RowDataBound". Code yang kita ketikkan di event handler ini agak "tricky", karena memang disinilah kita manipulasi tampilan datagridview sesuai dengan keinginan / kebutuhan kita. Disini kita harus mengecek value dari kolom tertentu untuk manipulasi column span, back color cell, fore color heading, dsb. Karena hasil dari RollUp itu merupakan kombinasi dari beberapa kolom, jadi data nya masih mentah untuk kita customize.

Sekarang saya akan berikan contohnya secara step by step. Skenarionya : Saya punya beberapa tabel yang berhubungan dengan data Dokter. Dimana tiap-tiap dokter mempunyai spesialisasinya tersendiri. Ok...langsung saja, anda bisa buat tabel dengan relasi seperti ini :

kemudian buat view nya (named it vDoctors) :

buat stored procedure untuk membuat summary data :

design gridview seperti ini dengan hanya mengambil dua BoundField column, yaitu : "Doctor Name" dan "Spesialis" :

run the application :

hasilnya masih mentah. Tambahkan code ini di event handler "RowDataBound" (tricky code step-1) :

   1:  If e.Row.RowType = DataControlRowType.DataRow Then
   2:   
   3:      If e.Row.DataItem("Spesialis").ToString = "" And _
   4:          e.Row.DataItem("Doctor Name").ToString = "" Then
   5:              e.Row.Cells.RemoveAt(0)
   6:              e.Row.Cells.RemoveAt(0)
   7:       End If

code ini digunakan untuk menghilangkan data yang mengandung record kosong untuk kolom Spesialis dan kolom Doctor Name, hasilnya :

di step selanjutnya kita akan manipulasi cell untuk membuat header columnnya. Dari hasil di atas dapat dilihat terdapat beberapa record yang Doctor Name nya kosong, nah cell ini yang akan kita jadikan kandidat untuk membuat header columnnya. Tricky code step-2 (manipulasi code di atas) :

   1:  If e.Row.RowType = DataControlRowType.DataRow Then
   2:   
   3:      If e.Row.DataItem("Spesialis").ToString = "" And _
   4:          e.Row.DataItem("Doctor Name").ToString = "" Then
   5:              e.Row.Cells.RemoveAt(0)
   6:              e.Row.Cells.RemoveAt(0)
   7:      End If
   8:   
   9:      If e.Row.DataItem("Doctor Name").ToString = "" Then
  10:              e.Row.BackColor = Drawing.Color.Aqua
  11:              e.Row.Font.Bold = True
  12:              e.Row.ForeColor = Drawing.Color.Red
  13:      End If

hasilnya :

masih ada yang kurang? ya...sekarang kita akan menghilangkan data dokter yang mempunyai value di kolom spesialis, the last tricky code step :

   1:  If e.Row.RowType = DataControlRowType.DataRow Then
   2:   
   3:      If e.Row.DataItem("Spesialis").ToString = "" And _
   4:          e.Row.DataItem("Doctor Name").ToString = "" Then
   5:              e.Row.Cells.RemoveAt(0)
   6:              e.Row.Cells.RemoveAt(0)
   7:      End If
   8:   
   9:      If e.Row.DataItem("Doctor Name").ToString = "" Then
  10:              e.Row.BackColor = Drawing.Color.Aqua
  11:                e.Row.Font.Bold = True
  12:                e.Row.ForeColor = Drawing.Color.Red
  13:      End If
  14:   
  15:      If e.Row.DataItem("Spesialis").ToString <> "" And _
  16:          e.Row.DataItem("Doctor Name").ToString <> "" Then
  17:                e.Row.Cells.RemoveAt(0)
  18:                e.Row.Cells(0).ColumnSpan = 2
  19:                e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Right
  20:      End If
  21:   
  22:  End If

 hasilnya :

Inilah hasil akhir setelah di finishing touch :)...btw ada yang familiar sama list dokter di atas :) klo anda berdomisili di Bandung, dan sering ke dokter anak, dokter kandungan, dokter internist setidaknya pasti anda tau :))


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.