0

请帮帮我!我希望在 datagridview 中删除 Date_Purchased(date) 中的时间。因为每当我以 PDF 格式导出数据网格时,其中都有日期和时间。我只想要日期并删除时间,尤其是在导出到 PDf 时。

这是示例代码。

     Public Sub NewInventory()
        Dim NI as SqlCommand =con.CreateCommand
        NI.CommandText = "Insert into Items_table(Room_ID, PC_Number, Item_Name, Date_Purhased) VALUES (@Room_ID,@PC_Number, @Item_Name, @Date_Purchased);"

        NI.Parameters.AddWithValue("@Room_ID", Room_ID)
        NI.Parameters.AddWithValue("@PC_Number", PC_Number)
        NI.Parameters.AddWithValue("@Item_Name", Item_Name)
        NI.Parameters.AddWithValue("@Date_Purchased", DatePurchasedDTP.Value)

        NI.ExecuteNonQuery()
        MessageBox.Show("New item created.")
    End Sub

//for DataGridView

     Public Sub GetRoomItems(RoomID As String)
          Dim getItems As String = "Select Item_ID, PC_Number, 
      Item_Name, Date_Purchased WHERE Room_ID=" + RoomID
          Dim adapter As New SqlDataAdapter(getItems, connection)

          Dim table As New DataTable()
          adapter.Fill(table)
          InventoryDataGrid.DataSource = table
     End Sub

//For exporting to pdf

     Private Sub ExportButton_Click(sender As Object, e As  EventArgs) Handles ExportButton.Click
          connection.Close()
          connection.Open()

          Dim pdfTable As New PdfPTable(ReportDataGridView.ColumnCount)
          pdfTable.DefaultCell.Padding = 1
          pdfTable.WidthPercentage = 100
          pdfTable.DefaultCell.HorizontalAlignment = Element. ALIGN_CENTER

          Dim ptable As New  Font(iTextSharp.text.Font.FontFamily.HELVETICA, 11, iTextSharp.text.Font.BOLD, BaseColor.BLACK)

     For Each column As DataGridViewColumn in ReportDataGridView.Columns
          Dim cell as new PdfPCell(New Phrase(New Chunk(column.HeaderText, ptable)))
          cell.HorizontalAlignment = Element.ALIGN_CENTER
          cell.FixedHeight = 30
          pdfTable.AddCell(cell)

     Next

     For Each row as DataGridViewRow In ReportDataGridView.Rows
          For each cell as DataGridViewCell In row.Cells
          pdfTable.AddCell(cell.Value.ToString)
          Next
     Next

         Dim folderpath As String = "C:\PDFs\"
         If Not Directory.Exists(folderpath) Then
              Directory.CreateDirectory(folderpath)
         End If

     Using sfd as New SaveFileDialog()
         sfd.ShowDialog()
         sfd.OverWritePrompt = True
         sfd.Title =" Save As"
         sfd.AddExtension = True
         sfd.DefaultExt = ".pdf"

          Using stream As New FileStream(sfd.FileName & ".pdf", 
FileMode.Create)
          Dim pdfdoc As New Document (PageSize.LETTER, 36.0F, 36.0F,36.0F,36.0F)
          PdfWriter.GetInstance(pdfdoc.stream)
          pdfdoc.Open()
          pdfdoc.Add(pdfTable)
          pdfdoc.Close()
          stream.Close()
          If File.Exists("path") Then
               File.AppendAllText("path", "contents")
     End If
     pdfdoc.Close()
     stream.Close()
          End Using

     End Using
     End Sub

如果你问我 Date_Purchased 的数据类型是什么,那就是 date。我使用日期而不是日期时间。并且仍然困惑为什么每当我导出它时时间仍然是 pdf 格式。

请帮我!太感谢了

4

1 回答 1

0

在 .NET 中,aDate仍然有一个时间组件,它只是设置为午夜(例如 12:00:00)。你可以在这里阅读:https ://docs.microsoft.com/en-us/dotnet/api/system.datetime.date?view=netframework-4.8

与此实例具有相同日期的新对象,时间值设置为午夜 00:00:00 (00:00:00)。

如果要将日期显示为仅包含日期的字符串,则可以使用Date.ToString()并指定省略时间的格式,例如Date.ToString("dd/MM/yyyy"). 或者,您可以使用Date.ToShortDateString()which 来执行此操作,但使用当前的文化短日期字符串格式。

更多信息在这里:https ://docs.microsoft.com/en-us/dotnet/api/system.datetime.toshortdatestring?view=netframework-4.8

在您的代码中,您正在执行此循环:

For Each row as DataGridViewRow In ReportDataGridView.Rows
    For each cell as DataGridViewCell In row.Cells
        pdfTable.AddCell(cell.Value.ToString)
    Next
Next

如果您将其更改为使用底层证券DataTable而不是DataGridView本身,您可以使用DataColumn.DataType来检查您何时使用日期:

For Each row as DataRow In DataTable.Rows
    For Each item In row.ItemArray
        If item.GetType Is GetType("System.DateTime") Then
            pdfTable.AddCell(item.ToString("dd/MM/yyyy"))
        Else
            pdfTable.AddCell(item.Value.ToString)
        End If
    Next
Next

我对特定的语法有点生疏,但你应该能够从那里解决它。

于 2020-03-26T12:06:08.840 回答