我有一个包含日期的列,当我单击列标题时,列按数字排序而不是按日期排序。我如何按日期排序?日期格式为dd / mm / yy。
示例(先排序最早):
10/12/08< - 12月 10/09/08< - 九月 12/12/08< - December
非常感谢
答案 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);