Suatu ketika saya membaca blog seorang aktivis blog yang telah lama berkecimpung dalam dunia ini, yang saya pahami dari tulisannya adalah sebuah keperihatinan beliau, bahwa perkembangan sosial media ternyata melemahkan semangat orang untuk menulis di Blog, padahal menurutnya sosial media tidak seefektif Blog untuk menyampaikan dan berbagi ilmu pengetahuan, apalagi semacam twiter yang membatasi postingan hanya beberapa puluh kata saja.
Ada satu hal dari tulisannya yang memberikan semangat kepada saya untuk menulis di Blog, yaitu sebuah pesan darinya yang berbunyi tulislah apa saja yang hendak kamu tulis(tentu saja hal-hal yang positif) jangan berpikir "ah.. paling juga sudah ada yang menulis tentang tema yang hendak aku tulis ini" atau "Siapa juga yang akan membaca tulisanku ini" atau "Ah.. tema yang akan aku tulis ini kan remeh dan sangat sederhana, siapa yang membutuhkan tulisan seperti ini", sang Bloger bilang "Buang jauh-jauh pikiran seperti itu, karena bisa jadi tema yang mungkin anda anggap sepele dan remeh temeh, bagi orang lain, itu adalah sesuatu yang rumit dan komplek dan yakinlah suatu saat nanti ada orang yang akan sampai ke Blog anda dan membaca tulisan anda".
Dan hal itu sudah saya buktikan, walaupun hanya hitungan beberapa gelintir saja rata-rata per harinya, namun ternyata ada juga yang mampir ke Blog ini, mungkin hanya sekedar lewat, mungkin juga ia menemukan solusi dari apa yang saya tulis di sini wal Hamdulillah telah bisa membantu orang lain. Mungkin juga manfaatnya tidak kita rasakan secara langsung akan tetapi siapa tahu sesuatu yang kita tulis itu telah menyelamatkannya dari hal kritis dalam hidupnya, bukankah Allah tidak akan menyia-nyiakan amalan seseorang walau ia hanya seberat atom. Semoga setiap solusi yang dapat kita berikan kepada orang lain akan menjadi penolong bagi kita dengan diangkatnya kesulitan-kesulitan yang sedang kita hadapi atau yang akan kita hadapi kelak. Jadi tetaplah semangat untuk menulis dan berbagi.
Yup.. sekarang setelah ber-busa-busa sebentar :) saya lanjutkan tulisan ini ke pokok pembahasan yang hendak saya tulis, sesuai dengan judulnya, Bismillah...
Jika kita membuat program aplikasi yang berkaitan dengan pengolahan database hampir bisa dipastikan kita akan menggunakan salah satu komponen yang sangat penting yaitu DataGridView. Data yang akan ditampilkan pada DataGridView bisa langsung di kaitkan ke sebuah datasource (istilahnya Bound) atau bisa juga data yang ditampilkan tersebut bukan data yang berasal dari sebuah datasource(istilahnya unBound), pada tulisan ini saya akan membahas bagaimana memanfaatkan DataGridView * Mulai dari setting kolom, menambahkan row dan menghapus lebih dari satu row * untuk data yang unBound.
Pertama
Buatlah sebuah project baru untuk WindowsApplication, pada Form1 tambahkan :
- DataGridView1, Sett property Width : 799 dan Height : 315
- 2 Buah Button, button1 ubah Text di property menjadi Remove dan button2 menjadi Add Row
- Set Form Width : 839 & Height : 433
Atur posisinya sesuai selera anda.
Kedua
Kopikan kode program berikut ini ke masing-masing tempatnya.
SettGridColText,
Untuk men-sett kolom sebagai input cell dengan tipe inputan TextBox
Public Function SettGridColText(ByVal hdrText As String, _
ByVal hdrName As String, _
ByVal lbrCol As Integer, _
ByVal TheReadO As Boolean, _
ByVal AuMode As DataGridViewAutoSizeColumnMode, _
Optional ByVal VisibleCol As Boolean = True, _
Optional ByVal ContAllignment As DataGridViewContentAlignment = DataGridViewContentAlignment.BottomCenter) As DataGridViewTextBoxColumn
Dim TheCol As New DataGridViewTextBoxColumn
With TheCol
.HeaderText = hdrText
.Name = hdrName
.Width = lbrCol
.ReadOnly = TheReadO
.AutoSizeMode = AuMode
.Visible = VisibleCol
.DefaultCellStyle.Alignment = ContAllignment 'Contain Alligment
End With
Return TheCol
End Function
SettGridColCehckBox,
Untuk men-sett kolom sebagai input cell dengan tipe inputan CheckBox
Public Function SettGridColCehckBox(ByVal hdrText As String, _
ByVal hdrName As String, _
ByVal lbrCol As Integer, _
ByVal TheReadO As Boolean, _
ByVal AuMode As DataGridViewAutoSizeColumnMode, _
Optional ByVal VisibleCol As Boolean = True, _
Optional ByVal ContAllignment As DataGridViewContentAlignment = DataGridViewContentAlignment.BottomCenter) As DataGridViewCheckBoxColumn
Dim TheCol As New DataGridViewCheckBoxColumn
With TheCol
.HeaderText = hdrText
.Name = hdrName
.Width = lbrCol
.ReadOnly = TheReadO
.AutoSizeMode = AuMode
.Visible = VisibleCol
.DefaultCellStyle.Alignment = ContAllignment 'Contain Alligment
End With
Return TheCol
End Function
SettGridColCombo,
Untuk men-sett kolom sebagai input cell dengan tipe inputan ComboBox
Public Function SettGridColCombo(ByVal hdrText As String, _
ByVal hdrName As String, _
ByVal lbrCol As Integer, _
ByVal TheReadO As Boolean, _
ByVal AuMode As DataGridViewAutoSizeColumnMode) As DataGridViewComboBoxColumn
Dim TheCol As New DataGridViewComboBoxColumn
Dim value As DataGridViewContentAlignment
value = DataGridViewContentAlignment.MiddleRight
With TheCol
.HeaderText = hdrText
.Name = hdrName
.Width = lbrCol
.ReadOnly = TheReadO
.AutoSizeMode = AuMode
End With
Return TheCol
End Function
SettGridView,
Pada procedure ini kita akan memanfaatkan ketiga procedure di atas untuk men-setting masing-masing kolom sesuai dengan kebutuhan kita, apakah kolom tersebut untuk menerima inputan dalam bentuk TextBox, CheckBox atau kah ComboBox.
'No
Dim ColNo As New DataGridViewTextBoxColumn
ColNo = SettGridColText("No", "hdrNo", 25, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
'Item Code
Dim ColIcode As New DataGridViewTextBoxColumn
ColIcode = SettGridColText("Code", "hdrCode", 70, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleLeft)
'Item Part No
Dim ColIPartNo As New DataGridViewTextBoxColumn
ColIPartNo = SettGridColText("PartNo", "hdrPartNo", 150, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
'Item Nameu
Dim ColIName As New DataGridViewTextBoxColumn
ColIName = SettGridColText("Name", "hdrName", 250, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleLeft)
'UoM
Dim ColUoM As New DataGridViewTextBoxColumn
ColUoM = SettGridColText("UoM", "hdrUoM", 40, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
'Qty
Dim ColQty As New DataGridViewTextBoxColumn
ColQty = SettGridColText("Qty#", "hdrQty", 60, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleRight)
Dim isForStock As New DataGridViewCheckBoxColumn
isForStock = SettGridColCehckBox("For Stock", "hdrForStock", 20, False, DataGridViewAutoSizeColumnMode.Fill, True, DataGridViewContentAlignment.MiddleCenter)
With DataGridView1
.Columns.Clear()
.RowHeadersWidth = 20
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.Columns.Add(ColNo)
.Columns.Add(ColIcode)
.Columns.Add(ColIPartNo)
.Columns.Add(ColIName)
.Columns.Add(ColUoM)
.Columns.Add(ColQty)
.Columns.Add(isForStock)
End With
End Sub
Ke-tiga
Kopikan kode berikut ke event onClick button Add Row
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataGridView1.Rows.Add()
End Sub
Ke-Empat
Kopikan Kode Berikut Ke Event onClick button Remove Row
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim idx2Remove As Integer
While (DataGridView1.SelectedRows.Count - 1) >= 0
Dim myStrPesan As String
idx2Remove = DataGridView1.SelectedRows(0).Index
myStrPesan = "Are sure want to remove item from the list : " & _
DataGridView1.SelectedRows(0).Cells("hdrCode").Value & "-" & _
DataGridView1.SelectedRows(0).Cells("hdrName").Value
If MessageBox.Show(myStrPesan, "Confirmation", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
DataGridView1.Rows.RemoveAt(idx2Remove)
Else
DataGridView1.SelectedRows(0).Selected = False
End If
End While
End Sub
Ke-Lima
Kopikan kode berikut ke event Form onLoad
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SettGridView()
End Sub
Ke-Enam
Tekan tombol F5 untuk melihat bagaimana hasilnya,
Tampilan saat program dijalankan
Click Tombol Add Row untuk menambahkan row, lalu kemudian anda bisa mencoba untuk melakukan input data seperti yang tampak pada tampilan di bawah ini
Anda bisa menghapus sebuah row atau lebih dalam waktu bersamaan, jika ingin melakukan penghapusan multiple row pada DataGridView maka pilih dulu row yang diinginkan dengan menggunakan kombinasi key tombol CTRL dan tombol mouse click Kiri, kemudian anda Click Button Remove, sebagaimana tampak pada gambar di bawah ini,
Kode program contoh secara lengkap bisa didownload di sini . Demikian semoga bermanfaat.
Tidak ada komentar:
Posting Komentar