Сортировать DataTable по столбцу пользовательского формата DateTime - PullRequest
0 голосов
/ 24 марта 2020

У меня есть таблица данных с 2 столбцами: первый столбец - это название города, а второй столбец - это дата, и мне нужно отсортировать его по возрастанию.

Формат даты был MM/dd/yyyy, и я успешно отсортировал таблицу, используя DataTable.DefaultView.Sort = "Date asc";

Но мне пришлось изменить формат на dd/MM/yyyy, и он перестал работать.

Что мне нужно сделать, чтобы отсортировать таблицу с использованием этого пользовательского формата?

Это ввод Ploiesti 19/05/2017 Ploiesti 20/05/2017 Ploiesti 21/05/2017 Sinaia 21/05/2017 Sinaia 22/05/2017 Sinaia 23/05/2017 Constanta 12/06/2017 Constanta 13/06/2017 Constanta 14/06/2017 Constanta 15/06/2017 Predeal 20/06/2017 Barsana 11/06/2017 Barsana 11/07/2017 Borsa 22/05/2017 Borsa 22/06/2017 Borsa 22/07/2017 Brasov 30/05/2017 Brasov 30/06/2017

И вывод после того, как я использую DataTable.DefaultView.Sort :

Barsana 11/06/2017 Barsana 11/07/2017 Constanta 12/06/2017 Constanta 13/06/2017 Constanta 14/06/2017 Constanta 15/06/2017 Ploiesti 19/05/2017 Ploiesti 20/05/2017 Predeal 20/06/2017 Ploiesti 21/05/2017 Sinaia 21/05/2017 Sinaia 22/05/2017 Borsa 22/05/2017 Borsa 22/06/2017 Borsa 22/07/2017 Sinaia 23/05/2017 Brasov 30/05/2017 Brasov 30/06/2017

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Вы можете попробовать следующий код для сортировки данных с использованием нового формата.

Код:

 private void button1_Click(object sender, EventArgs e)
        {

            foreach (DataRow dr in table.Rows)
            {
                dr["Date"] = DateTime.ParseExact(dr["Date"].ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture).ToShortDateString();
            }
            table.DefaultView.Sort = "Date asc";
            dataGridView1.DataSource = table;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

            table.Columns.Add("Name");
            table.Columns.Add("Date");
            table.Rows.Add("Ploiesti", "19/05/2017");
            table.Rows.Add("Ploiesti", "20/05/2017");
            table.Rows.Add("Ploiesti", "21/05/2017");
            table.Rows.Add("Sinaia", "22/05/2017");
            table.Rows.Add("Sinaia", "19/05/2017");
            table.Rows.Add("Constanta", "23/05/2017");
            table.Rows.Add("Constanta", "12/06/2017");
            table.Rows.Add("Barsana", "13/06/2017");
            table.Rows.Add("Brasov", "11/07/2017");
            table.Rows.Add("Brasov", "22/07/2017");
            dataGridView1.DataSource = table;
        }

Результат:

enter image description here

0 голосов
/ 24 марта 2020

Вот как я реализовал форматирование даты.

$('#CategoryTable').DataTable({
                    serverSide: true,
                    processing: true,
                    paging: true,
                    ajax: {
                        url: 'Category/GetData',
                        type: "POST",
                    },
                    order: [[ 0, 'desc' ]],
                    orderId:"CategoryId",
                    columns: [
                        { data: "CategoryId", visible: false },
                        { data: "CategoryName", title: "Category Name" },
                        { data: "CategoryDescription", title: "Category Description" },
                        { data: "CreatedDate", title: "Created Date", render: function (data) {
                               return data.format("DD/MM/YYYY hh:mm A");
                            }
                        },
                        {
                            data: "CategoryId", title: "Action", render: function (data) {
                                return '<a class="btn btn-sm u-btn-secondary" href="/Category/Edit/'+data+'">Edit</a>'
                            },
                            orderable:false
                        }
                    ]
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...