繁体   English   中英

如何对具有DateTime值但显示为String的DataGridView列进行排序?

[英]How to sort a DataGridView column that is has a DateTime Value, but is displayed as a String?

我在我的程序中有一个datagriview,我想按数据排序,我使用:

dataGridView1.Columns["Date"].ValueType = typeof(DateTime);

但是当我点击日期列时,它没有正确排序。

我的日期格式是:23-12-1997

是不正确的日期写入格式?

您的单元格格式应为:

dataGridView1.Columns["Date"].DefaultCellStyle.Format = "dd-MM-yyyy";

通常,如果ValueType是DateTime,则此格式不会影响此列的排序。 我怀疑您将String值放入此列,而不是DateTime值。

一个例子:

            DataTable t = new DataTable();
            DataColumn c1 = new DataColumn("Name", typeof(String));
            DataColumn c2 = new DataColumn("Date", typeof(DateTime));
            t.Columns.Add(c1);
            t.Columns.Add(c2);
            for (int i = 0; i < 10; i++)
            {
                t.Rows.Add(new object[] {i.ToString(), DateTime.Now.AddHours(i * 2) });
            }
            dataGridView1.DataSource = t;
            dataGridView1.Columns[1].DefaultCellStyle.Format = "HH MM/dd/yyyy";

我做了很多寻找,然后使用了一些非常简单的东西。 我添加了一个隐藏列,并按以下格式输入字符串日期:File.GetLastWriteTime(fl).ToString(“yyyyMMddhhmm”)并对隐藏列进行排序。 当我使用文件时间时,没有理由任何日期/时间不起作用。

我偶然发现了研究日期列上的DataGridView排序问题的这个问题。 我的情况比OP稍微复杂一点,所以我发帖在这里,希望能帮助别人。

在我的例子中,我的DataGridView的DataSource设置为BindingSource对象。 我的BindingSource的DataSource是一个DataSet对象。 通过更改DataSet设计器中的属性,我无需添加任何代码即可修复排序问题。 我去了Visual Studio设计器并选择了我的DataSet。 在属性窗口中,我选择了“在DataSet Designer中编辑”。 然后在DataSet Designer中,我选择了我的Column,并将其DataType属性更改为System.DateTime(之前已将其设置为String)。 问题解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM