簡體   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