我想在datagridview列中设置日期 [英] I want set date in datagridview column

查看:85
本文介绍了我想在datagridview列中设置日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在vb.net的datagridview列中设置日期



在这个datagridview中我使用的是组合框列,我也希望将日期设置为另一列。 br />




提前感谢。

解决方案

参考:数据网格视图列 [ ^ ]


以下是对您的问题的引用,



datagridview中的日期值 [ ^ ]


 Public Class CalendarUseColumn 
Inherits System.Windows.Forms.DataGridViewColumn

Public Sub New()
MyBase.New(New CalendarUseCel l())
End Sub

Public Overrides Property CellTemplate()As DataGridViewCell
Get
返回MyBase.CellTemplate
结束获取
设置(ByVal值As DataGridViewCell)

'确保用于模板的单元格是CalendarCell。
If(值IsNot Nothing)AndAlso _
Not value.GetType()。IsAssignableFrom(GetType(CalendarUseCell))_
然后
抛出新的InvalidCastException(必须是CalendarCell )
结束如果
MyBase.CellTemplate = value

结束集
结束物业

结束等级

公共类CalendarUseCell
继承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)

'将编辑控件的值设置为当前单元格值。
MyBase.InitializeEditingControl(rowIndex,initialFormattedValue,_
dataGridViewCellStyle)

Dim ctl As CalendarUseEditingControl = _
CType(DataGridView.EditingControl,CalendarUseEditingControl)

If Not Object.Equals(Me.Value,Nothing)AndAlso(Me.Value IsNot DBNull.Value)然后
ctl.Value = CType(Me.Value,DateTime)
结束如果
End Sub



公共覆盖ReadOnly属性EditType()类型
获取
'返回CalendarCell使用的编辑控件的类型。
返回GetType(CalendarUseEditingControl)
结束获取
结束属性

公共覆盖ReadOnly属性ValueType()类型
获取
'返回CalendarCell包含的值的类型。
返回GetType(DateTime)
结束获取
结束属性

公共覆盖ReadOnly属性DefaultNewRowValue()As Object
Get
'使用当前日期和时间作为默认值。
返回DateTime.Now
结束获取
结束属性

结束类

公共类CalendarUseEditingControl
继承DateTimePicker
实现IDataGridViewEditingControl

私有dataGridViewControl As DataGridView
私有valueIsChanged As Boolean = False
私有rowIndexNum As Integer

Public Sub New()
Me.Format = DateTimePickerFormat.Short
End Sub

公共属性EditingControlFormattedValue()As Object _
实现IDataGridViewEditingControl.EditingControlFormattedValue

获取
返回Me.Value.ToShortDateString()
结束获取

设置(ByVal值为对象)
如果TypeOf值为String则
Me.Value = DateTime.Parse (CStr(value))
End if
End Set

End Property

公共函数GetEdit ingControlFormattedValue(ByVal context _
As DataGridViewDataErrorContexts)As Object _
Implements IDataGridViewEditingControl.GetEditingControlFormattedValue

返回Me.Value.ToShortDateString()

结束函数

Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As _
DataGridViewCellStyle)_
Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl

Me.Font = dataGridViewCellStyle.Font
Me .CalendarForeColor = dataGridViewCellStyle.ForeColor
Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor

End Sub

公共属性EditingControlRowIndex()As Integer _
实现IDataGridViewEditingControl。 EditingControlRowIndex

获取
返回rowIndexNum
结束获取
设置(ByVal值为整数)
rowIndexNum = valu e
结束集

结束属性

公共函数EditingControlWantsInputKey(ByVal key As Keys,_
ByVal dataGridViewWantsInputKey As Boolean)As Boolean _
实现IDataGridViewEditingControl.EditingControlWantsInputKey

'让DateTimePicker处理列出的键。
选择Case键和Keys.KeyCode
Case Keys.Left,Keys.Up,Keys.Down,Keys.Right,_
Keys.Home,Keys.End,Keys.PageDown,Keys .PageUp

返回True

Case Else
返回非dataGridViewWantsInputKey
结束选择

结束函数

Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean)_
实现IDataGridViewEditingControl.PrepareEditingControlForEdit

'不需要做任何准备工作。

结束子

公共ReadOnly属性RepositionEditingControlOnValueChange()_
As Boolean实现_
IDataGridViewEditingControl.RepositionEditingControlOnValueChange

获取
返回False
结束获取

结束属性

公共属性EditingControlDataGridView()As DataGridView _
实现IDataGridViewEditingControl.EditingControlDataGridView

获取
返回dataGridViewControl
结束获取
设置(ByVal值为DataGridView)
dataGridViewControl = value
结束集

结束物业

公共属性EditingControlValueChanged()As Boolean _
实现IDataGridViewEditingControl.EditingControlValueChanged

获取
返回valueIsChanged
结束获取
设置(ByVal值为布尔值)
valueIsChanged = value
End Set

End Property

Public ReadOnly Property EditingControlCursor()As Cursor _
Implements IDataGridViewEditingControl.EditingPanelCursor

获取
返回MyBase.Cursor
结束获取

结束属性

受保护的覆盖Sub OnValueChanged(ByVal eventargs As EventArgs)

'通知DataGridView单元格的内容已更改。
valueIsChanged = True
Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
MyBase.OnValueChanged(eventargs)

End Sub

End Class


how to set date in datagridview column in vb.net

In this datagridview i am using the combobox column and also i want set date to another column.


thanks in advance.

解决方案

Refer: Datagrid view columns[^]


Here is the reference to your question,

Date value in datagridview[^]


Public Class CalendarUseColumn
    Inherits System.Windows.Forms.DataGridViewColumn

    Public Sub New()
        MyBase.New(New CalendarUseCell())
    End Sub

    Public Overrides Property CellTemplate() As DataGridViewCell
        Get
            Return MyBase.CellTemplate
        End Get
        Set(ByVal value As DataGridViewCell)

            ' Ensure that the cell used for the template is a CalendarCell.
            If (value IsNot Nothing) AndAlso _
                Not value.GetType().IsAssignableFrom(GetType(CalendarUseCell)) _
                Then
                Throw New InvalidCastException("Must be a CalendarCell")
            End If
            MyBase.CellTemplate = value

        End Set
    End Property

End Class

Public Class CalendarUseCell
    Inherits DataGridViewTextBoxCell

    Public Sub New()
        ' Use the short date format.
        Me.Style.Format = "d"
    End Sub

    Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
        ByVal initialFormattedValue As Object, _
        ByVal dataGridViewCellStyle As DataGridViewCellStyle)

        ' Set the value of the editing control to the current cell value.
        MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, _
        dataGridViewCellStyle)

        Dim ctl As CalendarUseEditingControl = _
        CType(DataGridView.EditingControl, CalendarUseEditingControl)

        If Not Object.Equals(Me.Value, Nothing) AndAlso (Me.Value IsNot DBNull.Value) Then
            ctl.Value = CType(Me.Value, DateTime)
        End If
    End Sub



    Public Overrides ReadOnly Property EditType() As Type
        Get
            ' Return the type of the editing contol that CalendarCell uses.
            Return GetType(CalendarUseEditingControl)
        End Get
    End Property

    Public Overrides ReadOnly Property ValueType() As Type
        Get
            ' Return the type of the value that CalendarCell contains.
            Return GetType(DateTime)
        End Get
    End Property

    Public Overrides ReadOnly Property DefaultNewRowValue() As Object
        Get
            ' Use the current date and time as the default value.
            Return DateTime.Now
        End Get
    End Property

End Class

Public Class CalendarUseEditingControl
    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)
            If TypeOf value Is String Then
                Me.Value = DateTime.Parse(CStr(value))
            End If
        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

        ' Let the DateTimePicker handle the keys listed.
        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

        ' No preparation needs to be done.

    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)

        ' Notify the DataGridView that the contents of the cell have changed.
        valueIsChanged = True
        Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
        MyBase.OnValueChanged(eventargs)

    End Sub

End Class


这篇关于我想在datagridview列中设置日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆