2010-11-05 71 views
1

我有一个自动生成列的gridview。其中一列是日期字段。 不知何故,我无法排序日期字段。它被解释为一个字符串。排序日期列gridview

数据出来一个数据库。那里的数据类型是在datetime上设置的。

这是在ASPX文件中的代码:

<asp:BoundField DataField="date" HeaderText="date" SortExpression="date" DataFormatString="{0:dd/MM/yyyy}" HtmlEncode="false"/> 

我到底错在这里做什么?

回答

5

我意识到这是一个相对较旧的帖子,但我自己找到了解决方案。

如果Date被填充为字符串,那么您需要确保它不是。要做到这一点创建表中的数据为DataTable和数据使用加时:

dt.Columns.Add("DateTime", System.Type.GetType("System.DateTime"));

这出刚刚排序日期列,你会喜欢它。

+0

嗨,我正在开发的项目不再被开发。但由于您的解释听起来像是我遇到的问题的解决方案,因此我会将您的帖子标记为已回答。谢谢! – Yustme 2011-12-30 10:28:54

0

当你格式化一个值(不管它是什么数据类型)时,结果是一个String。对结果的任何操作(例如排序)都可以使用String。

您应该直接对数据库端的Gridview数据源进行排序。

+0

它不是我如何排序网格。它的用户。有时它需要被发送,有时需要下降。在Google搜索这个问题之后,我添加了Formatter。它并不在代码中。值得一试。 – Yustme 2010-11-05 10:29:57

+0

您可以将CurrentSortDirection保存在ViewState中,检查新的sortexpression是否与旧的相同,然后切换方向。 – 2010-11-05 10:39:02

+0

为什么在从数据库加载数据之后不能对DataTable进行排序? http://stackoverflow.com/questions/857115/how-to-sort-a-datagridview-column – JeffO 2010-11-05 13:48:57