[英]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.