December 17, 2008

Format DataGridView

DataGridView merupakan control dari .Net 2.0, ini merupakan perkembangan dari DataGrid pada .Net 1.x. Sekarang dengan artikel ini kita akan membahas bagaimana memformat datagridview kita dengan metode run time (coding). Untuk melakukan format pada Datagridview kita menggunakan DatagridviewCellStyle. Kita dapat membuat style dengan
banyak DatagridViewStyle, untuk masing-masing baris, kolom dan cells. DatagridviewCellStyle mengambil seluruh format properties pada DatagridView.
Dibawah ini merupakan beberapa properties pada DatagridviewCellStyle :
Alignment
Untuk melakukan format text didalam cell
BackColor and ForeColor
Untuk color dari pada background cell dan warna text pada cell.
Font
Untuk format tulisan
Format
Bagaimana melakukan format string. Contoh melakukan format numeric atau datetime menjadi string.kita dapat menggunakan standard .Net format atau custom format.
NullText
Mengganti Null dengan Text
SelectionBackColor and SelectionForeColor
Mensetting background cell dan warna text jika cell di pilih
WrapMode
Menetapkan jika text adalah multi lines (jika tinggi row cukup untuk menampung) atau akan di potong. Sebagai default adalah wrap.
Dibawah ini adalah sintaks untuk melakukan format pada DatagridView
Dim Style As DataGridViewCellStyle = _ DataGridView1.Columns("CustomerID").DefaultCellStyleStyle.Font = New Font(DataGridView1.Font, FontStyle.Bold)Style.Alignment = DataGridViewContentAlignment.MiddleRightStyle.BackColor = Color.LightYellow
Style.ForeColor = Color.DarkRed

Di asumsikan kita sudah bisa memasukkan data ke dalam datagridview. Pada sintaks diatas, kita sedang melakukan format untuk kolom CustomerID. Hasil dari sintaks ini dapat dilihat pada gambar diatas. Dan untuk masing-masing kolom dapat kita ubah format nya.
Dan bagaimana menambah button pada DataGridView
Dim Details As New DataGridViewButtonColumn()
Details.Name = "Details"

Details.UseColumnTextForButtonValue = True
Details.Text = "Details..."

Details.HeaderText = ""

DataGridView1.Columns.Insert(DataGridView1.Columns.Count, Details)
Dari sintaks diatas dapat diliat kita membuat button dengan text “Details…”, dan tidak memiliki Header pada kolom nya.
Sedangkan untuk menampilkan value pada saat button di klik adalah sebagai berikut.
Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

If DataGridView1.Columns(e.ColumnIndex).Name = "Details" Then
MessageBox.Show("Kamu mengklik " & _
DataGridView1.Rows(e.RowIndex).Cells("CustomerID").Value)
End If

End Sub
Dan bagaimana membuat Highlight pada cell, sebagai contoh bagaiman jika kita ingin membuat highlight untuk harga yang lebih dari 100, dengan nama kolom ada “Harga”. Berikut sintaks nya.
Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting


If DataGridView1.Columns(e.ColumnIndex).Name = "Harga" Then
If e.Value > 100 Then

e.CellStyle.ForeColor = Color.Red
e.CellStyle.BackColor = Color.Yellow
End If
End If

End Sub
Note : Artikel ini dapat berjalan pada .Net 2.0 keatas
Semoga dengan artikel ini dapat menambah wawasan kita semua.
Wassalam
Note : Artikel ini dapat berjalan pada .Net 2.0 keatas
Semoga dengan artikel ini dapat menambah wawasan kita semua.
Wassalam

15 comments:

yogablog said...

menarik juga ni..cell backcolor dapat diwarnai(highlight) sesuai kondisinya..
Nah jika kita ingin mewarnai dengan membandingkan nilai suatu column dengan colom lain gmana om Jun.. Misal ada dua kolom: stok kini dan stok minimal. bgmana carany bila stok kini > stok minimal warnany hijau,stok kini < stok minimal warnany merah..makasih.

uki said...

mas jun salam kenal, sy uda download artikel vb.net(1) tp stlh sy cb g berhasil, mhon bntuannya mas,,,,, trims

uki said...

salam knl mas jun
sy sdh download artikel step by step menjadi programer dg vb.net(1), dn tlh sy cb tp tdk berhasil, mhon bntuanx mas, trims.............

yogablog said...

menarik juga ni..cell backcolor dapat diwarnai(highlight) sesuai kondisinya..
Nah jika kita ingin mewarnai dengan membandingkan nilai suatu column dengan colom lain gmana om Jun.. Misal ada dua kolom: stok kini dan stok minimal. bgmana carany bila stok kini > stok minimal warnany hijau,stok kini < stok minimal warnany merah..makasih.

Junindar, MVP VB said...

cara simple seperti ini, cuma g tau performance nya.. :) :)
buat procedure sperti dibawah :

Private Sub ChangeColor()
For Each r As DataGridViewRow In DgBuku.Rows
If Integer.Parse(r.Cells(4).Value.ToString()) < _
Integer.Parse(r.Cells(5).Value.ToString()) Then
r.Cells(4).Style.BackColor = Color.Yellow
r.Cells(4).Style.ForeColor = Color.Red
ElseIf Integer.Parse(r.Cells(4).Value.ToString()) > _
Integer.Parse(r.Cells(5).Value.ToString()) Then
r.Cells(4).Style.BackColor = Color.Red
r.Cells(4).Style.ForeColor = Color.Yellow
End If
Next
End Sub


Trus jalankan procedure setelah binding datagridview biasa nya di Form_Load..
Sorry ga banyak membantu.. :)

Guntur_Hana said...

saya jalankan
DefaultCellStyle.format = "n" untuk format ketika form load berhasil, tetapi ketika setelah data di edit koq tidak ada separator ribuannya
Mohon bantuan

Lia Junita Ramadhan said...

Maaf mas Jun, bisakah header datagridview di split menjadi dua atau lebih baris, saya menemukan cara dengan c#, tapi saya belum memahami c# dan saya sedangg belajar vb.net

Junindar, MVP VB said...

@Lia Junita Ramadhan : sample nya kan bisa di convert ke VB ..

Wahyu Nugroho Indrawinata said...

mas mau tanya kalo pas kita klik tombol button detailnya lalu muncul gambar atau foto yang sudah kita simpan di databse sebelumnya gimana mas caranya?

maulidiya eka yulinda said...

gan bagaimana ya menampilkan full kolom di datagrid walaupun datagridnya tidak ada datanya?..mohon banyuannya gan :P

ilyraCahyono said...

salam kenal mas

saya ita lumajang mau tanya

saya mau menampilkan data di datagridview dari tabel barang di sql server 2008.

tabel barang berelasi dg tabel satuan shg tabel barang berisi kdsatuan.

ketika disave otomatis yg tersimpan dan yang ditampilkan di gridview adalah kdsatuan.

pertanyaanya adalah bagaimana nama satuan dr tabel satuan bisa tampil di datagridview tersebut.

terima kasih

ilyraCahyono said...

salam kenal mas

saya ita lumajang mau tanya

saya mau menampilkan data di datagridview dari tabel barang di sql server 2008.

tabel barang berelasi dg tabel satuan shg tabel barang berisi kdsatuan.

ketika disave otomatis yg tersimpan dan yang ditampilkan di gridview adalah kdsatuan.

pertanyaanya adalah bagaimana nama satuan dr tabel satuan bisa tampil di datagridview tersebut.

terima kasih

Anonymous said...

kalo mengambil value header column dari checkbox dalam data grid yang kita klik, teru disimpannya dengan looping,, itu bagaimana ya ka....

Mohammad Sulaiman said...

Mas Jun

saya mau tanya tentang LINQ

bagaimana cara menulis sintaks sql
"select kode_dept from tbldepartemen where kode_dept in(select max(kode_dept) from tbldepartemen)" dalam LINQ ?

Terima Kasih

Arbi Juniar Setiawan said...

numpang tanya nih , kalo misalkan kita punya query yang isinya ada nama, department dan tanggal . nah kalo misalkan di tanggal nya itu ada tanggal dan jam , gimana cara agar tampil di datagridview nya hanya tanggal saja dan jam pada kolom tanggal tersebut masuk ke kolom time (kita tambahkan sendiri) gimana ya caranya ? butuh pencerahan nya master :( makasih