Seringkali
kita membutuhkan data tanggal sejenis datetimepicker dalam sebuah datagridview.
Untuk itu marilah kita coba membuatnya dengan langkah-langkah sebagai berikut :
1.     
Buatlah sebuah project baru
2.     
Buatlah sebuah form dan tambahkan sebuah datagridview
3.     
Lalu ketiklah atau copy coding di bawah ini :
Imports
System.Data.OleDb
Imports
System
Imports
System.Windows.Forms
Public Class Form1
    Sub KolomBaru()
        Dim ColumnName1, ColumnName2 As
New CalendarColumn()
       
DGV.Columns.Add("KodeKamar",
"Kode Kamar")
       
ColumnName1.HeaderText = "Tgl
Masuk"
       
DGV.Columns.Add(ColumnName1)
       
ColumnName2.HeaderText = "Tgl
Keluar"
       
DGV.Columns.Add(ColumnName2)
    End Sub
    Private Sub
Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
        Call KolomBaru()
    End Sub
    Public Class
CalendarColumn
        Inherits DataGridViewColumn
        Public Sub New()
            MyBase.New(New
CalendarCell())
        End Sub
        Public Overrides Property CellTemplate() As
DataGridViewCell
            Get
                Return MyBase.CellTemplate
            End Get
            Set(ByVal value As DataGridViewCell)
                If (value IsNot Nothing) AndAlso Not value.GetType().IsAssignableFrom(GetType(CalendarCell)) Then
                   
Throw New
InvalidCastException("Must be a
CalendarCell")
                End If
                MyBase.CellTemplate = value
            End Set
        End Property
    End Class
    Public Class
CalendarCell
        Inherits DataGridViewTextBoxCell
        Public Sub New()
            Me.Style.Format = "d"
        End Sub
        Public Overrides Sub InitializeEditingControl(ByVal
rowIndex As Integer,
ByVal initialFormattedValue As Object, ByVal dataGridViewCellStyle As
DataGridViewCellStyle)
            On Error Resume Next
            MyBase.InitializeEditingControl(rowIndex,
initialFormattedValue, dataGridViewCellStyle)
            Dim ctl As
CalendarEditingControl = CType(DataGridView.EditingControl,
CalendarEditingControl)
            If (Me.Value Is Nothing) Then
               
ctl.Value = CType(Me.DefaultNewRowValue, DateTime)
            Else
               
ctl.Value = CType(Me.Value, DateTime)
            End If
        End Sub
        Public Overrides ReadOnly Property
EditType() As Type
            Get
                Return GetType(CalendarEditingControl)
            End Get
        End Property
        Public Overrides ReadOnly Property
ValueType() As Type
            Get
                Return GetType(DateTime)
            End Get
        End Property
        Public Overrides ReadOnly Property
DefaultNewRowValue() As Object
            Get
                Return DateTime.Now
            End Get
        End Property
    End Class
    Public Class
CalendarEditingControl
        Inherits DateTimePicker
        Implements IDataGridViewEditingControl
        Private dataGridViewControl As
DataGridView
        Private valueIsChanged As
Boolean = False
        Private rowIndexNum As
Integer
        Public Sub New()
            Me.Format = DateTimePickerFormat.Short
        End Sub
        Public Property
EditingControlFormattedValue() As Object Implements
IDataGridViewEditingControl.EditingControlFormattedValue
            Get
                Return Me.Value.ToShortDateString()
            End Get
            Set(ByVal value As Object)
                Try
                   
Me.Value = DateTime.Parse(CStr(value))
                Catch
                   
Me.Value = DateTime.Now
                End Try
            End Set
        End Property
        Public Function
GetEditingControlFormattedValue(ByVal context As DataGridViewDataErrorContexts) As Object _
            Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
            Return Me.Value.ToShortDateString()
        End Function
        Public Sub
ApplyCellStyleToEditingControl(ByVal
dataGridViewCellStyle As DataGridViewCellStyle)
Implements
IDataGridViewEditingControl.ApplyCellStyleToEditingControl
            Me.Font = dataGridViewCellStyle.Font
            Me.CalendarForeColor =
dataGridViewCellStyle.ForeColor
            Me.CalendarMonthBackground =
dataGridViewCellStyle.BackColor
        End Sub
        Public Property
EditingControlRowIndex() As Integer Implements
IDataGridViewEditingControl.EditingControlRowIndex
            Get
                Return rowIndexNum
            End Get
            Set(ByVal value As Integer)
               
rowIndexNum = value
            End Set
        End Property
        Public Function
EditingControlWantsInputKey(ByVal key As Keys, ByVal
dataGridViewWantsInputKey As Boolean) As Boolean Implements
IDataGridViewEditingControl.EditingControlWantsInputKey
            Select Case key And Keys.KeyCode
                Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, _
                   
Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
                   
Return True
                Case Else
                   
Return Not
dataGridViewWantsInputKey
            End Select
        End Function
        Public Sub
PrepareEditingControlForEdit(ByVal selectAll As Boolean) Implements
IDataGridViewEditingControl.PrepareEditingControlForEdit
        End Sub
        Public ReadOnly Property RepositionEditingControlOnValueChange() As Boolean Implements
IDataGridViewEditingControl.RepositionEditingControlOnValueChange
            Get
                Return False
            End Get
        End Property
        Public Property
EditingControlDataGridView() As DataGridView Implements
IDataGridViewEditingControl.EditingControlDataGridView
            Get
                Return dataGridViewControl
            End Get
            Set(ByVal value As DataGridView)
               
dataGridViewControl = value
            End Set
        End Property
        Public Property
EditingControlValueChanged() As Boolean Implements
IDataGridViewEditingControl.EditingControlValueChanged
            Get
                Return valueIsChanged
            End Get
            Set(ByVal value As Boolean)
               
valueIsChanged = value
            End Set
        End Property
        Public ReadOnly Property EditingControlCursor() As Cursor Implements
IDataGridViewEditingControl.EditingPanelCursor
            Get
                Return MyBase.Cursor
            End Get
        End Property
        Protected Overrides Sub OnValueChanged(ByVal
eventargs As EventArgs)
           
valueIsChanged = True
            Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
            MyBase.OnValueChanged(eventargs)
        End Sub
    End Class
End Class
Hasil
akhir dari coding tersebut adalah sebagai berikut :


EmoticonEmoticon