【问题标题】:Showing DateTime without time in a DataGridView [duplicate]在 DataGridView 中显示没有时间的 DateTime [重复]
【发布时间】:2014-12-04 15:28:12
【问题描述】:

我正在编写一个程序来在 Visual Basic .NET 中保存和显示匹配统计信息。 现在我在程序中显示日期时遇到了问题。 从数据库中读取(MS Access),我在DataGridView 中显示所有内容。

为了显示日期,我使用dgvWedstrijden.Rows.Item(n).Cells(1).Value = dataReader(1).Date 这一行。 但是当我这样做时,日期显示为9/10/2014 00:00:00。 如果我不输入.Date,那么小时就不是00:00:00,而是14:15:26

除了我之前展示的那一行,我还使用了:

Dim datum As DateTime = FormatDateTime(dataReader(1), 1)
dgvWedstrijden.Rows.Item(n).Cells(1).Value = datum.Date

但这给出了相同的结果。

有人可以帮助我如何在没有时间的情况下显示日期(所以没有00:00:00)?我不能使用ToString,因为这样就无法按日期对列进行排序。

谢谢

Public Sub updateWedstrijden()
    Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String
    Dim dataReader As OleDbDataReader
    Dim addnewcommand = New OleDb.OleDbCommand

    dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
    dbSource = "Data Source = D:\De Koarters\Kalender\Minivoetbal\Minivoetbal\DatabaseMinivoetbal.accdb"
    con.ConnectionString = dbProvider & dbSource

    dgvWedstrijden.Rows.Clear()

    addnewcommand = New OleDb.OleDbCommand("SELECT SeizoenTornooi,Datum,Startuur,Tegenstander,DoelpuntenTegen,DoelpuntenVoor FROM Wedstrijden", con)
    con.Open()

    dataReader = addnewcommand.ExecuteReader
    While dataReader.Read()
        Dim n As Integer = dgvWedstrijden.Rows.Add()
        dgvWedstrijden.Rows.Item(n).Cells(0).Value = dataReader(0)
        dgvWedstrijden.Rows.Item(n).Cells(1).Value = dataReader(1).Date
        dgvWedstrijden.Rows.Item(n).Cells(2).Value = dataReader(2).ToString.Substring(0, 2) & "u" & dataReader(2).ToString.Substring(2, 2)
        dgvWedstrijden.Rows.Item(n).Cells(3).Value = dataReader(3)
        dgvWedstrijden.Rows.Item(n).Cells(4).Value = dataReader(4) & "-" & dataReader(5)
    End While

    dataReader.Close()
    con.Close()

    dgvWedstrijden.Sort(dgvWedstrijden.Columns(0), ListSortDirection.Ascending)
End Sub

【问题讨论】:

    标签: .net vb.net date datetime ms-access


    【解决方案1】:

    您可以在 dgv 上格式化列,而不是逐个单元格地操作字符串。应该让您保留类型以便以后进行可能更简单的排序。

    dgView.Columns["<Column Name Here>"].DefaultCellStyle.Format = "dd/MMM/yyyy"
    

    【讨论】:

      【解决方案2】:

      这只是formatting 的问题,将日期按原样存储在单元格中,这样您就不会在排序时丢失时间部分并更改列格式以仅显示日期部分:

      dgvWedstrijden.Columns(1).DefaultCellStyle.Format = "d"
      
      While dataReader.Read()
          dgvWedstrijden.Rows.Item(n).Cells(1).Value = dataReader(1)
      End While
      

      【讨论】:

      • 非常感谢,这对我帮助很大:)
      猜你喜欢
      • 2016-06-07
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多