繁体   English   中英

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

[英]C# Sorting Datagrid column by date

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

示例(先排序最旧):

10/12/08 <--十二月 10/09/08 <--九月 12/12/08 <--十二月

非常感谢

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

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

希望有帮助!

如果数据源来自存储过程,则将日期作为数据集中的两列返回。 一种是格式化的 (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"/>

请注意第一行中的排序表达式。 它指的是 DateTime 数据类型中的列。

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

试试这个,它对我有用。

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

用实际的列号替换colNum d是短日期。 我也有军事时间,所以我不得不为时间块添加HH:mm:ss

您应该使用单元格格式

dgv.Rows[rowId].Cells["colCreated"].Style.Format = "HH:mm :: dd/MM/yyyy";

或整个列的类似内容(请参阅列的 DefaultCellStyle)

当 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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM