[英]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.