2014-09-11 74 views
1

在我DGV,我有最新名单在列(1):如何在VB visual studio 2012中按日期排序DataGridView Column?

11-Sep-2014 
11-May-2011 
11-Jan-2014 
11-Mar-2014 
12-Sep-2010 

这样如何让降结果:

11-Sep-2014 
11-Mar-2014 
11-Jan-2014 
11-May-2011 
12-Sep-2010 

列(1)不是DateTime类型,但SortText类型,我必须设置这样的字符串。它可以排序吗?

我一直在使用的代码尝试:

DGV.Columns(1).SortMode = DGV.Sort(DGV.Columns(1), System.ComponentModel.ListSortDirection.Descending) 

但它是无用的,它按日期:(

不排序,这是我DGV:enter image description here

Okeh,这是我的DGV代码简介:

进口System.Data.OleDb

Pu BLIC类LapTransaksiSimpanan

Public Sub Koneksi() 
    str = "provider=microsoft.jet.oledb.4.0;data source=dbkoperasi.mdb" 
    Conn = New OleDbConnection(str) 
    If Conn.State = ConnectionState.Closed Then 
     Conn.Open() 
    End If 
End Sub 

Sub TampilGrid() 
    da = New OleDbDataAdapter("select * from LapTransaksiSimpanan", Conn) 
    ds = New DataSet 
    da.Fill(ds, "LapTransaksiSimpanan") 
    DGV.DataSource = ds.Tables("LapTransaksiSimpanan") 

    'on the below I wanna to sort the column, my code below is useless :(
    DGV.Sort(DGV.Columns(1), System.ComponentModel.ListSortDirection.Descending) 

    DGV.Columns("ID_Simpanan").Width = 120 
    DGV.Columns("NAK").Width = 37 
    DGV.Columns("Tanggal").Width = 75 
    DGV.Columns("Jumlah").Width = 110 
End Sub 

Private Sub Setoran_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Call Koneksi() 
    Call TampilGrid() 
End Sub 

末级

+1

你的日期列是如何声明的?另外,你怎么把这个表格放到你的表格上? – jbutler483 2014-09-11 12:55:15

+1

您的日期列表是一个字符串列表还是实际类型“日期”?如果它是一个字符串,它将按照它在DGV中的排序。您可以通过更改列中的类型或创建自定义排序来修复它。ICompare – Kat 2014-09-11 14:06:39

+0

请显示一些代码,特别是绑定部分。如果绑定到数据表,还包括如何填充此数据表。 – Neolisk 2014-09-11 15:01:19

回答

0

storingdisplaying数据之间的差。

您需要更改数据库表架构。 Tanggal列应为datedatetime类型。当你解决了这个问题,是微不足道的显示使用自定义格式的日期:

Me.DGV.Columns("Tanggal").DefaultCellStyle.Format = "dd-MMM-yyyy" 

如果你因为某些原因无法改变的模式,那么你就需要通过实施IComparer创建一个自定义比较。在this MSDN page的底部有一个例子。