2013-04-05 5 views
0

Я использую asp.net 2005 в своей системе и создаю приложение. У меня проблема с сортировкой формата даты. У меня есть таблица, включающая три поля, такие как «имя пользователя, дата, страница посещения».Проблема сортировки формата даты

Мои записи для этого, как показано ниже

user name  date time    visited page 
    xyz   4/4/2013 5:30:45 PM  aaa.aspx  
    xyz   4/4/2013 6:35:15 PM  aaa.aspx  
    xyz   4/4/2013 7:55:45 PM  aaa.aspx  
    xyz   4/4/2013 10:05:45 PM  aaa.aspx  
    xyz   4/4/2013 11:06:45 PM  aaa.aspx 

Я хочу отсортирован это без использования Java Script или JQuery. и выход должен быть

user name  date time    visited page  
xyz   4/4/2013 11:06:45 PM  aaa.aspx  
xyz   4/4/2013 10:05:45 PM  aaa.aspx  
xyz   4/4/2013 7:55:45 PM  aaa.aspx  
xyz   4/4/2013 6:35:15 PM  aaa.aspx  
xyz   4/4/2013 5:30:45 PM  aaa.aspx 

Но я получил выход как этот

user name  date time    visited page  
xyz   4/4/2013 7:55:45 PM  aaa.aspx  
xyz   4/4/2013 6:35:15 PM  aaa.aspx  
xyz   4/4/2013 5:30:45 PM  aaa.aspx 
xyz   4/4/2013 11:06:45 PM  aaa.aspx  
xyz   4/4/2013 10:05:45 PM  aaa.aspx 

Я попытался отсортирован это с помощью DataView, но он не работает должным образом может любой помочь мне в этом вопросе.

+0

Где значения идут? SQL? Если это так, сортируйте там, а не на клиенте. – jrummell

+0

Я использую CSV-файл вместо любого sql. –

+0

Когда вы говорите, что у вас «есть таблица» ... вы имеете в виду, что у вас есть таблица данных в памяти или вы имеете в виду, что у вас есть таблица HTML? Какой элемент управления asp.net будет/используется для создания таблицы html? – Penfold

ответ

1

Есть много других способов, чтобы читать CSV, в том числе только в качестве исходного текстового файла и простой строки синтаксического анализа. Вы можете использовать некоторые из предложений в других ответах здесь, или вы можете просто заполнить результаты в DataTable или что угодно. Используйте то, с чем вам удобно.

Важный бит, который не упоминался в других ответах, заключается в том, что вам нужно четко указать формат даты и времени, который вы читаете. Например, как я узнаю, что 1/2/2013 представляет собой 2 января или 1 февраля?

Поскольку файл у вас есть не использует инвариантное формат даты (например, ISO8601, например), то вы должны где-то явно обеспечивая формат, например:

DateTime dt = DateTime.ParseExact(YourDateString, 
            "M/d/yyyy", // or "d/M/yyyy" 
            CultureInfo.InvariantCulture); 
1

Установите CSV в качестве источника ODBC. Затем вы должны использовать Schema.ini и установить это поле как дату и время. См. Ссылку: http://msdn.microsoft.com/en-us/library/ms709353.aspx

Это должно объяснить это. Тогда, как только вы закончите вы можете сделать SQL-запрос, и сделать простой

SELECT * ORDER BY [date time] desc 

Я лично ненавижу, используя плоские текстовые файлы, если вы могли бы использовать DTS и получить его в реляционную базу данных какой-то, что» хорошее начало.

1

Прочтите значения .csv в объекте с строго типизированным свойством DateTime и затем выполните сортировку.

CsvValue[] values = ReadCsvFile().OrderBy(value => value.DateTime); 

Где CsvValue является

public class CsvValue 
{ 
    public string UserName {get; set;} 
    public DateTime DateTime {get; set;} 
    public string VisitedPage {get; set;} 
} 
+0

Это был другой метод, о котором я думал, прежде чем я разместил ниже. Я собирался предложить LINQ, но это .NET 2005, до его введения ... – ApolloSoftware