Highlighting Record in Winform DataGridView

Windows Control , Posted at : Jul/02/2007   [Click this link to download code sample]
11617 Views   15 Comments

Kontrol Winform DataGridView mempunyai sebuah event yang dapat kita gunakan salah satunya untuk memberikan warna tertentu properti back color dan fore color dengan kriteria record yang kita inginkan. Misalkan kita ingin memberi warna yang berbeda untuk record dimana data produk yang dimiliki memiliki nilai stok sama dengan 0 (nol). Event yang dapat digunakan yaitu CellFormatting. Dengan memanfaatkan event tersebut kita dapat merubah style cell yang berbeda dengan nilai defaultnya, bahkan kita juga bisa menambahkan atau merubah teks ke cell tertentu.

Pada artikel kali ini saya akan membuat contoh aplikasi sederhana yang akan mengecek UnitsInStock table Products di database Northwind. Jika nilai stok nya 0 (nol) maka cell atau row tersebut akan diberi warna merah dengan teks nya berwarna kuning.

Dengan menggunakan DataGridViewCellFormattingEventArgs yang kita dapat menentukan kolom tertentu yang akan diberi warna back color atau teks color yang berbeda. Selain itu dari parameter tersebut dapat kita dapatkan value dari cell yang sedang aktif. Sehingga dari sini lah kita terapkan kriteria formatting cell yang diinginkan.

Pada contoh code ini saya menggunakan Data Access Layer (ADONetHelper) yang saya buat sendiri untuk memudahkan pembuatan code saja :). Anda tinggal ganti saja dengan code yang sesuai (You know what i mean eh... :) ). Ok...let us see the code :

   1:  Option Strict On
   2:   
   3:  Imports ADONetHelper
   4:  Imports System.Data.SqlClient
   5:   
   6:  Public Class frmHighlightGrid
   7:   
   8:      Private strConn As String = My.Settings.connString
   9:      Private sqlConn As New SqlConnection(strConn)
  10:      Private rowToPaint As DataGridViewRow
  11:   
  12:      Private Sub LoadData()
  13:          Dim dtProd As DataTable = _
  14:          ADONetHelper.DataTableObject.GetDataTableFromDataReader( _
  15:          "Select * From Products", CommandType.Text, sqlConn, _
  16:          "products")
  17:   
  18:          DataGridView1.DataSource = dtProd
  19:   
  20:          DataGridView1.SelectionMode = _
  21:          DataGridViewSelectionMode.FullRowSelect
  22:   
  23:          DataGridView1.RowsDefaultCellStyle.SelectionBackColor = _
  24:          Color.Aqua
  25:   
  26:          DataGridView1.RowsDefaultCellStyle.SelectionForeColor = _
  27:          Color.Black
  28:   
  29:          DataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = _
  30:          Color.Aqua
  31:          DataGridView1.RowHeadersDefaultCellStyle.SelectionForeColor = _
  32:          Color.Red
  33:   
  34:      End Sub
  35:   
  36:      Private Sub Button1_Click(ByVal sender As System.Object, _
  37:      ByVal e As System.EventArgs) Handles Button1.Click
  38:          Me.LoadData()
  39:      End Sub
  40:   
  41:      Private Sub DataGridView1_CellFormatting(ByVal sender As Object, _
  42:      ByVal e As _
  43:      System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
  44:      Handles DataGridView1.CellFormatting
  45:          If e.ColumnIndex = 6 Then '//UnitsInStock column
  46:   
  47:              rowToPaint = Me.DataGridView1.Rows(e.RowIndex)
  48:   
  49:              If Not rowToPaint.IsNewRow AndAlso _
  50:              CInt(e.Value) = 0 Then '//jika stok = 0 dan bukan row baru
  51:                  e.Value = e.Value.ToString & " - Need to Order"
  52:   
  53:                  rowToPaint.DefaultCellStyle.BackColor = _
  54:                  Color.Red
  55:   
  56:                  rowToPaint.DefaultCellStyle.ForeColor = _
  57:                  Color.Yellow
  58:              End If
  59:          End If
  60:      End Sub
  61:   
  62:  End Class

The result in action :


[Comments]
ecoy  Oct/24/2007 03:18:25 :
mas kalo pake datagrid yang tersedia di vb6 source kodenya apaan.
Rully Yulian MF  Oct/24/2007 03:39:05 :
Btw mas ecoy saya sudah lama sekali ga pake vb6 :) (sudah hampir 4 tahunan) sori banget...mungkin mas bisa googling di internet :)
ecoy  Oct/24/2007 04:19:43 :
saya dah telusuri di semua web tapi belum ada yang berhasil... biar datagrid divb 6 itu salah satu row nya berganti warna seperti pada source kode Highlighting Record in Winform DataGrid semua pada menyarankan menggunakan flex grid. masalahnya disemua form saya gunakan datagrid. jadi kalo diganti dengan flexgrid ... cape deh... padahal cuma permasalahan ganti warna doang biar keliatan jelas gitu
ecoy  Oct/24/2007 04:21:16 :
tolong dong bang pang cariin perintahnya .thank;s before and after.
Rully Yulian MF  Oct/24/2007 04:48:06 :
Saya ga janji mas :) klo ada waktu ntar saya liat-liat dah (saya harus install dulu Visual Studio 6 nya :)) btw ga ada rencana buat upgrade ke vb.net?
ecoy  Oct/24/2007 05:57:04 :
waduh kayaknya nanti aja deh soalnya gak ada waktu ...,senin sampe jumat kerja, sabtu & minggu nerusin kuliah. maklum baru punya duit mas buat kuliah. ini aja saya bisa masuk kerja gara gara bisa sedikit program. peninggalan kuliah d3 komputer. skrng nerusin s1. yah lumayan. alhamdulillah bisa dapet kerjaan juga walaupun honor.
ASDA  Aug/13/2009 04:19:26 :
SALAM KENAL.... MASALAH GANTI WARNA JG NIH TAPI DI MSHFLEXGRID KETIKA STOCK BARANG MENIPIS MK WARNA BERUBAH,GMN TAH? THANKS
bodo  Oct/26/2009 01:53:34 :
tau dah...kaga danta...
Adi  Nov/27/2009 09:54:12 :
wah.... akhirnya ketemu juga nih yang saya cari. hampir aja ganti komponen. ternyata datagridview udah mantap ya skr dibandingkan dengan kakaknya yang di vb 6. Mas Rully, thx banget atas informasinya. Pokoknya mantap dah nih artikel...
santo  Feb/20/2013 03:31:51 :

kang Rully,bisa minta bocoran  untuk pembuatan ADONetHelper nya..:D maklum masih belum paham ni...

Rully  Feb/23/2013 10:57:31 :

Santo > Itu cuma data access layer biasa saja mas dengan menggunakan ADO.NET yang sudah dibungkus menjadi .dll :)

Bima  Aug/31/2015 12:03:10 :

 gan ane udah cari2 solusi buat seperti diatas. ane pake VB 6 dan VSFlexgrid... tp masih belum bisa... ada saran gan?

Rully  Sep/01/2015 08:19:49 :

Bima > Kode diatas memang untuk vb.net...disarankan sih pindah ke vb.net saja mas :) 

Zeldianto Eka Putra  Jan/02/2017 08:04:18 :

 Wah,, makasi banget nih mas.. sangat membantu

 

Yoga  Aug/24/2017 11:31:09 :

Bang ini saya punya project tapi konek dengan ms acces. apakah ada pencerahan dari abang? masih pemula banget soalnya. Soalnya punya abang yang ini kan pake sql.


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

GYIR
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6104 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4693 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3566 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3330 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2706 times  
Links 
Certifications 
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006-2016   Rully Yulian MF   All rights reserved.