4

I have a column that contains dates, when I click the column header the column is sorted numerically and not by date. How would I sort this by date? The date is in the format dd/mm/yy.

Example (sorted oldest first):

10/12/08 <--December 10/09/08 <--September 12/12/08 <--December

Many thanks

4

5 回答 5

10

Is the source a datatable? If so, you'll probably need to specify that the column in question is of type DateTime:

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

Hope that helps!

于 2008-12-15T16:57:22.863 回答
2

如果数据源来自存储过程,则将日期作为数据集中的两列返回。一个是格式化的(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 格式对日期进行排序时,这对我有用。

于 2010-09-10T15:05:00.290 回答
1

试试这个,它对我有用。

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

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

于 2012-11-17T07:10:41.207 回答
1

您应该使用单元格格式

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

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

于 2010-07-24T11:50:41.547 回答
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); 
于 2019-11-13T11:27:19.903 回答