我在我的程序中有一个datagriview,我想按数据排序,我使用:
dataGridView1.Columns["Date"].ValueType = typeof(DateTime);
但是当我点击日期列时,它没有正确排序。
我的日期格式是:23-12-1997
是不正确的日期写入格式?
答案 0 :(得分:3)
您的单元格格式应为:
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";
答案 1 :(得分:1)
我做了很多寻找,然后使用了一些非常简单的东西。我添加了一个隐藏列,并按以下格式输入字符串日期: File.GetLastWriteTime(fl).ToString(“yyyyMMddhhmm”)并对隐藏列进行排序。 当我使用文件时间时,没有理由认为任何日期/时间都不起作用。
答案 2 :(得分:0)
我偶然发现了这个问题,研究了日期列上的DataGridView排序问题。我的情况比OP稍微复杂一点,所以我发帖在这里,希望能帮助别人。
在我的例子中,我的DataGridView的DataSource被设置为BindingSource对象。我的BindingSource的DataSource是一个DataSet对象。通过更改DataSet设计器中的属性,我无需添加任何代码即可修复排序问题。我去了Visual Studio设计器并选择了我的DataSet。在属性窗口中,我选择了&#34;在DataSet Designer中编辑&#34;。然后在DataSet Designer中,我选择了我的Column,并将其DataType属性更改为System.DateTime(之前已将其设置为String)。问题解决了。