как отсортировать по дате внутри таблицы данных - PullRequest
1 голос
/ 01 марта 2012

Как отсортировать данные в сетке по часам?Я использую XML-файл без формата с набором данных и представлением сетки данных.

code c # winforms:

FileStream stream = new FileStream("file.xml", FileMode.Open);
ds.readXml(stream);
Stream.Close();
datagridview1.DataSource = ds.Tables[0];
ds.Tables[0].DefaultView.Sort = "start asc";

XML-файл

<?xml version="1.0" standalone="yes"?>
<Table>
  <hours>
    <Start>10:00 AM</Start>
    </hours>
<hours>
    <Start>11:00 AM</Start>
    </hours>
<hours>
    <Start>1:00 PM</Start>
    </hours>
<hours>
    <Start>2:00 PM</Start>
    </hours>


</Table>

на выходе, который у меня есть,это не отсортировано.13:00 14:00 10:00 11:00

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Вы можете добавить еще один столбец типа DateType и установить его выражение для имени столбца «start» и отсортировать по этому столбцу:

        FileStream stream = new FileStream("file.xml", FileMode.Open);
        DataSet ds = new DataSet();
        ds.ReadXml(stream);
        ds.Tables[0].Columns.Add("Temp", typeof(DateTime), "Start");
        stream.Close();
        dataGridView1.DataSource = ds.Tables[0];
        ds.Tables[0].DefaultView.Sort = "temp asc";
0 голосов
/ 01 марта 2012

Похоже, что данные загружаются в виде строки, а не значения DateTime. Он сортируется как строка. Если вы хотите, чтобы она сортировалась как дата, то вам нужно конвертировать данные из string в DateTime. Вот пример преобразования данных:

var accTable = new DataTable(); 

var columnSpec = new DataColumn("Date"); 
columnSpec.DataType = typeof(DateTime); 
accTable.Columns.Add(columnSpec); 

http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/e6b2aa61-bd1a-40f9-9e45-a538ed42c3d3

Как только вы конвертируете данные, они должны быть отсортированы по дате.

Вот еще один вопрос к SO о преобразовании данных в представлении данных:

Как программно преобразовать тип столбца в DataGridView C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...