C#按日期对Datagrid列进行排序

时间:2008-12-15 16:51:46

标签: c# datagridview

我有一个包含日期的列,当我单击列标题时,列按数字排序而不是按日期排序。我如何按日期排序?日期格式为dd / mm / yy。

示例(先排序最早):

10/12/08< - 12月 10/09/08< - 九月 12/12/08< - December

非常感谢

5 个答案:

答案 0 :(得分:10)

源是数据表吗?如果是这样,您可能需要指定相关列的类型为DateTime:

myDataTable.Columns["ColumnName"].DataType = System.Type.GetType("System.Date");

希望有所帮助!

答案 1 :(得分:1)

答案 2 :(得分:1)

如果数据源来自存储过程,则将日期作为数据集中的两列返回。一个是格式化的(varchar),另一个是日期时间数据类型。

假设存储过程返回列:COLUMN_STRING_FORMAT和COLUMN_DATETIME_FORMAT

在网格标记中,

< asp:BoundColumn DataField =“COLUMN_STRING_FORMAT”SortExpression =“COLUMN_DATETIME_FORMAT”DataFormatString =“{0:dd-MMM-yyyy}”/> < asp:BoundColumn DataField =“COLUMN_DATETIME_FORMAT”Visible =“false”/>

注意第一行中的Sort Expression。它引用DateTime数据类型中的列。

当我以DD-MMM-YYYY格式对日期进行排序时,这对我有用。

答案 3 :(得分:1)

试试这个,它对我有用。

dataGridView1.Columns[colNum].DefaultCellStyle.Format = "d";

colNum替换为实际的列号。 d是短日期。我也有军事时间,因此我必须为时间块添加HH:mm:ss

答案 4 :(得分:0)

当datagrid未绑定到数据源并且dataGrid逐行填充时,以下方法对我有效:

//Init 
dataGridView_records.Columns[0].DefaultCellStyle.Format = "dd/MM/yy HH:mm:ss";

然后按如下所示填充数据网格:

DateTime date = DateTime.ParseExact((String)drs["data"], "dd/MM/yy HH:mm:ss", CultureInfo.InvariantCulture);
object[] gdr = new object[1] { date };//add the other columns data here
dataGridView_records.Rows.Add(gdr);