【问题标题】:How to change the format from DataTable and Show in DataGridView in vb.net如何在 vb.net 中更改 DataTable 的格式并在 DataGridView 中显示
【发布时间】:2023-01-12 11:56:55
【问题描述】:

如何在vb.net中改变DataTable的格式和在DataGridView中显示? 我想更改 DataTable 的格式,而无需通过 DataGridView 格式并在 DataGriView 中显示。请推荐最佳解决方案。 我试过了,但结果仍然在 datagridview 中,没有改变,因为我在下面的屏幕截图中附上了。

谢谢

        Dim dt As New DataTable("tbl")
        Dim dtColumn As DataColumn
        dtColumn = New DataColumn()
        dtColumn.DataType = GetType(DateTime)
        dtColumn.ColumnName = "CreatedDate"
        dt.Columns.Add(dtColumn)
        Dim dr As DataRow = dt.NewRow()
        dr("CreatedDate") = DateTime.Now
        Dim dr1 As DataRow = dt.NewRow()
        dr1("CreatedDate") = DateTime.Now.AddDays(1)
        dt.Rows.Add(dr)
        dt.Rows.Add(dr1)
Dim query = dt.AsEnumerable().Select(Function(r) r.Field(Of DateTime)("CreatedDate").ToString("yyyy/MM/dd"))
DataGridView1.DataSource = dt
'if I run the console then the output results change this should be possible without formatting the datagridview
        'For Each r In query
        '    Console.WriteLine(r.ToString())
        '    Console.WriteLine("Press any key to continue")
        '    Console.ReadKey()

        'Next r

【问题讨论】:

    标签: vb.net linq datatable datagridview asenumerable


    【解决方案1】:

    您可以删除.ToString("yyyy/MM/dd")

    在您的窗体设计器中,选择您的 DataGridView 并浏览到事件。 为ColumnAdded 添加事件处理程序。

    这将生成以下代码:

    Private Sub DataGridView1_ColumnAdded(sender As Object, e As DataGridViewColumnEventArgs) Handles dataGridView1.ColumnAdded
    
    End Sub
    

    现在您可以定义每当将列添加到您的数据网格视图时事件处理程序必须执行的操作,因此:

    Private Sub DataGridView1_ColumnAdded(sender As Object, e As DataGridViewColumnEventArgs) Handles dataGridView1.ColumnAdded
    
        ' Cast the argument to DataGridViewTextBoxColumn
        Dim c As DataGridViewTextBoxColumn = TryCast(e.Column, DataGridViewTextBoxColumn)
    
        ' Test if conversion has been successful
        If c IsNot Nothing Then
    
            Select Case c.ValueType
    
                Case GetType(Date) ' If ValueType of column being added is Date
    
                    Dim cellStype As New DataGridViewCellStyle With {.Format = "dd/MM/yyyy"} ' Set here the format for this DataGridViewTextBoxColumn
                    c.DefaultCellStyle = cellStype ' Apply the style
    
                    ' Add here other ValueType you want to format differently, if any
    
            End Select
    
        End If
    
    End Sub
    

    请注意,您可以为其他人定义格式ValueType,只需在同一事件处理程序中添加正确的大小写即可。

    结果:

    我强烈建议您为 VB.Net 项目启用 Option Strict On。你可以阅读更多关于它的信息here

    【讨论】:

    • 感谢你的回复。如果我运行控制台然后输出结果改变这应该是可能的而无需格式化 datagridview。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多