Untuk melakukan pengelompokkan data berdasarkan kategori tertentu dalam sebuah datagridview diperlukan beberapa langkah. Langkah-langkahnya bisa kita lakukan sbb :
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 :
design gridview seperti ini dengan hanya mengambil dua BoundField column, yaitu : "Doctor Name" dan "Spesialis" :
hasilnya masih mentah. Tambahkan code ini di event handler "RowDataBound" (tricky code step-1) :
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 :))