Как отсортировать столбец DateTime в DataView?

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

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

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


person Tassisto    schedule 21.03.2011    source источник


Ответы (4)


http://forums.asp.net/p/1267353/2393006.aspx

person sajoshi    schedule 21.03.2011
comment
не совсем ответ, а ссылка на него. опубликуйте ответ, чтобы я мог принять его - person Tassisto; 21.03.2011
comment
Ответ там, как предложил openshac, таков: проверьте свойство DataType DataColumn и убедитесь, что для него установлено значение DateTime. - person DOK; 23.05.2013

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

dt.Columns["Дата"].DataType = Type.GetType("System.DateTime");

person Mohsin Shaikh    schedule 04.09.2014

Надеюсь, мой фрагмент кода показывает необходимость установить столбец как 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;
person Dennis    schedule 18.09.2015

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

person openshac    schedule 21.03.2011
comment
Сначала я должен установить тип данных этого столбца на DateTime. Тогда я могу отсортировать его - person Tassisto; 21.03.2011