[英]Sorting Column By DateTime Value Not String Value?
我正在使用它來對列表視圖進行排序: http : //support.microsoft.com/kb/319401它工作得很好,除非我嘗試對日期列進行排序,它將在晚上10點之后出現2AM(因為2大於1)。
4/7/2011 10:00:00 PM
4/7/2011 2:00:00 AM
這是我正在使用的代碼:
var lvcs = new ListViewColumnSorter();
ListView.ListViewItemSorter = lvcs;
lvcs.Order = SortOrder.Ascending;
lvcs.SortColumn = 1; //<-Contains DateTime values in string format
ListView.Sort();
那么如何轉換為DateTime並使用上面的代碼進行排序?
期待中的“排序日期”一節這篇文章 -你更換比較方法。
示例代碼:
try {
DateTime dateX = Convert.ToDateTime(listviewX.SubItems[ColumnToSort].Text);
DateTime dateY = Convert.ToDateTime(listviewY.SubItems[ColumnToSort].Text);
compareResult = ObjectCompare.Compare(dateX, dateY);
}
catch {
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
}
這里標記為正確的答案對我沒有幫助。 我的應用程序似乎進入了無限循環的拋出異常。 為了避免使用try / catch和捕獲拋出的exeptions,我使用了以下內容並且它完美地工作:
DateTime dateX;
DateTime dateY;
if (
DateTime.TryParse(listviewX.SubItems[ColumnToSort].Text, out dateX)
&& DateTime.TryParse(listviewY.SubItems[ColumnToSort].Text, out dateY)
)
{
compareResult = ObjectCompare.Compare(dateX, dateY);
}
else
{
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
}
您應該從列表視圖中獲取項目並將日期/時間字符串轉換為DateTime對象,然后對這些對象調用sort(將它們放入集合中),然后將它們放回ListView中。
希望這能解決您的問題。
上面是正確的,因為你正在進行列表的字符串比較。
嘗試轉換為DateTime和Create List<DateTime>
然后對其進行排序,
您可以使用DateTime.TryParse
或ParseExact指定您自己的解析格式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.