我有一个使用C#编写的asp.net网站。 grdStatus是System.Windows.Forms.DataGridView的一个实例。它显示2列 - 状态日期和状态。 StatusDate包含DateTime值。状态包含字符串。问题是当网格在StatusDate上排序时,它不会将值排序为DateTime。老实说,我不太清楚它是如何分类的。当我点击状态日期列标题,它按这样的日期:按日期时间排序DataGridView
Status Date
9/24/2014 10:01:06 AM
9/24/2014 10:00:58 AM
9/23/2014 7:27:23 PM
9/1/2015 4:48:35 PM
10/22/2014 12:15:38 PM
10/22/2014 12:15:29 PM
10/22/2014 12:12:52 PM
10/22/2014 12:12:27 PM
这当然不是日期时间对它们进行排序,但它似乎并没有被按字母顺序排序他们,无论是。以下是刷新网格的方法。我添加了两行--- ---,试图强制它按照DateTime对行进行排序,但它们似乎没有效果。
private void RefreshGrid()
{
IEnumerable<OrderService.OrderDetailStatus> statusItems = services.OrderSvc.GetStatusHistoryForOrderDetail(OrderDetailId);
IEnumerable<ViewModels.StatusHistoryGridViewModel> gridItems = AutoMapper.Mapper.Map<IEnumerable<ViewModels.StatusHistoryGridViewModel>>(statusItems);
grdStatus.AutoGenerateColumns = false;
grdStatus.DataSource = gridItems.ToDataTable<ViewModels.StatusHistoryGridViewModel>();
--->grdStatus.Columns[0].ValueType = typeof(DateTime);
--->grdStatus.Sort(grdStatus.Columns[0], ListSortDirection.Ascending);
}
以下是用作网格数据源的视图模型。如你所见,CreatedDate(映射到StatusDate)是一个DateTime成员。
namespace IVGOffice.ViewModels
{
public class StatusHistoryGridViewModel
{
public string StatusName { get; set; }
public DateTime CreatedDate { get; set; }
}
}
我看了有关这一些其他的帖子,但我还没有发现任何帮助。任何人都可以向我解释如何得到这个排序正确吗?