Как отсортировать столбец DateTime в DataView? - PullRequest
2 голосов
/ 21 марта 2011

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

dt.DefaultView.Sort = "Meldingsdatum asc";
gvOutlookMeldingen.DataSource = dt;
gvOutlookMeldingen.DataBind();

Может кто-нибудь мне помочь, пожалуйста.

Ответы [ 4 ]

3 голосов
/ 21 марта 2011
2 голосов
/ 04 сентября 2014

DataView хранит дату или что-либо как строковый тип.Таким образом, когда вы сортируете это сортировать по строке.Чтобы отсортировать его как DateTime, вам необходимо преобразовать его в DateTime перед добавлением каких-либо данных следующим образом:

dt.Columns ["Date"]. DataType = Type.GetType ("System.DateTime");

1 голос
/ 21 марта 2011

Является ли ваш столбец типа DateTime, если нет, то, вероятно, должно быть. Сделайте это прямо в начале, прежде чем заполнять таблицу. В качестве альтернативы вы можете создать второй столбец типа DateTime и использовать его, но это немного грязно: -)

0 голосов
/ 18 сентября 2015

Мой фрагмент кода, я надеюсь, показывает необходимость установки столбца как typeof (DateTime), прежде чем вы сможете правильно его отсортировать

        EntityCollection result = serviceProxy.RetrieveMultiple(querybyattribute);

        DataTable dt = new DataTable();
        dt.Columns.Add("Title");
        dt.Columns.Add("Created On", typeof(DateTime));

        foreach (Entity entity in result.Entities)
        {
            DataRow dr = dt.NewRow();

            dr["Title"] = entity.Attributes["title"].ToString();
            dr["Created On"] = entity.Attributes["createdon"];

            dt.Rows.Add(dr);
        }

        DataView dv = dt.DefaultView;
        dv.Sort = "Created On desc";
        DataTable sortedDT = dv.ToTable();

        dataGridView1.DataSource = sortedDT;
...