Grouping Data In DataGridView

Posted at : Apr/03/2007
14703 Views | 9 Comments

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 :))


[Comments]

Elang (Nov/01/2007 02:30:38)
Bagus deh, saya mau coba praktekkan
Nicko (Nov/17/2009 12:25:57)
Salam sebelumnya untuk kk Rully.. Saya benar2 belajar banyak dari sini.. tapi ada beberapa yang saya ingin tanyakan... Apakah bisa kita membuat Judul Spesialis (yg warnannya biru) tanpa menggunakan Stored Procedure..?? Thx kk.. ^^
Nicko (Nov/17/2009 01:38:35)
Salam sebelumnya untuk kk Rully.. Saya benar2 belajar banyak dari sini.. tapi ada beberapa yang saya ingin tanyakan... Apakah bisa kita membuat Judul Spesialis (yg warnannya biru) tanpa menggunakan Stored Procedure..?? Thx kk.. ^^
Rully (Nov/17/2009 04:40:45)
@Nicko > Bisa saja mas kalau mau menggunakan tanpa stored procedure, jadi perintah yang terdapat di dalam stored procedure tersebut langsung di ketikkan di bahasa pemrogrammannya atau istilahnya menggunakan ad-hoc query.
ino_ot (Oct/02/2013 03:28:47)

Wah tutorialnya keren, ini yang saya cari om .. tpi kenapa di evente handler datagrid saya k tidak ada Rowdatabound ya ? saya juga hanya menggunakan mysql database ,, mohon penjelasannya ,,

aconk (Mar/09/2015 10:28:30)

Keren bang.......infonya sangat sippp...kebetuian ini saya juga bikin aplikasi dari VB net ...cara untuk menghitung jumlah dokter seluruh, jumlah dokter per sepesialis gimana bang caranya ?????/thanks 

Syafii (Feb/08/2016 11:12:27)

 Mas. Mo nanyak. Saya membuat form dengan datagrid dengan adodc. Tombol next. Ketika klik tombol next, data 1 sampai 5 akan ditampilkan di datagrid. Klik tombol next lagi,data 6 sampai 10 akan ditampilkan. Begitupun seterusnya. Bagaimana caranya mas. Saya pakai vb 6.0

Rully (Feb/25/2016 11:40:37)

@Syafii : Owh maaf mas, saya sudah lama sekali tidak lagi menggunakan vb 6.0 :)

Teguh Vage Saputra (Jun/27/2016 04:36:38)

Mas,,. Misal ny saya mw membaca data di datagridview untuk sebuah kondisi percabangan

gmana ya mas.?
Misal ny gini "IF value pada DGV cell 2 dan column 1 Bernilai Yes Maka

Textbox = "Benar"

else

Textbox = "Salah"

End IF


[Write your comment]

Name (required)

Email (required-will not published)

Comment
XETG
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6983 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

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