C#DataGridView列的日期时间格式

时间:2012-05-17 23:23:07

标签: c# .net winforms

我有datagridview从数据库填充数据,有些列我在其中有日期和时间“MMddyyyy”和“hhmmss”格式,我想要做的是当datagridview加载时,我想将此格式更改为一些其他格式说,dd-MM-yy用于日期和时间hh-mm-ss。我想知道是否有人可以指导我如何做到这一点。 我无法通过gridview.columns [x]来执行此操作.defaultcellstyle.format =“dd-MM-yy” 以上我没有得到任何错误,但在gridview上没有任何改变......

由于

注意:我没有选择更改数据库中的列长度.. :-( 没有语法问题

2 个答案:

答案 0 :(得分:8)

Microsoft建议您拦截CellFormatting事件(其中DATED是您要重新格式化的列):

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // If the column is the DATED column, check the
    // value.
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "DATED")
    {
        ShortFormDateFormat(e);
    }
}

private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting)
{
    if (formatting.Value != null)
    {
        try
        {
            DateTime theDate = DateTime.Parse(formatting.Value.ToString());
            String dateString = theDate.ToString("dd-MM-yy");    
            formatting.Value = dateString;
            formatting.FormattingApplied = true;
        }
        catch (FormatException)
        {
            // Set to false in case there are other handlers interested trying to
            // format this DataGridViewCellFormattingEventArgs instance.
            formatting.FormattingApplied = false;
        }
    }
}

答案 1 :(得分:2)

DataGridView格式化中的sintax与DateTime略有不同,但您可以得到相同的结果。在我的例子中,我有一个Time collumn,默认显示HH:mm:ss,我只想显示小时和分钟:

 yourDataGridView.Columns["Time"].DefaultCellStyle.Format = @"hh\:mm";