Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Ordinamento datatable
Forum - C# / VB.NET - Ordinamento datatable "manuale"

Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 15:51
Venerdì, 21/05/2010
ciao ragazzi...sto cercando di ordinare un datatable manualmente...

qualcuno ha idea di dove sbagli? mi ritorna solo la data più piccola...

grazie mille!

'  procedure SelectionSort(a: lista dei numeri da ordinare);
    'for i = 1 to n - 1
    '  posmin ← i
    '  for j = (i + 1) to n
    '    if a[j] < a[posmin]
    '      posmin ← j
    '  aus ← a
    '  a ← a[posmin]
    '  a[posmin] ← aus


    Public Function OrdinaTabella(ByRef myDt As DataTable) As DataTable
        Dim I, J As Integer
        Dim DTOrdinato As DataTable = myDt.Clone()

        Dim a As DataRow() = myDt.Select()

        Dim PosMin As Integer
        Dim RigaSuccessiva As DataRow = myDt.NewRow()
        Dim Temp As DataRow = myDt.NewRow()

        For I = 0 To a.Length - 1
            PosMin = I
            For J = I + 1 To a.Length - 1
                If CDate(a(J)("Data")) < CDate(a(PosMin)("Data")) Then
                    PosMin = J
                End If
            Next J
            Temp = a(I)
            a(I) = a(PosMin)
            a(PosMin) = Temp
            DTOrdinato.ImportRow(a(PosMin))
        Next I
        Return DTOrdinato

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:54
Venerdì, 21/05/2010
Ma i dati li ottieni con una SELECT da un database? Se è così, perchè non fai fare l'ordinamento al motore del DB?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 16:44
Venerdì, 21/05/2010
Sarebbe bello...

No, i dati arrivano da un un file...
Non posso usare il dataview perché quando faccio il sort,
la data dentro la tabella ovviamente è testo.

Per questo ho l'esigenza di ordinare "a mano"...

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 17:21
Sabato, 22/05/2010
Ho risolto...:-)

Con il metodo select del datatable ottengo un array di righe...
Ordino l'array di righe con l'algoritmo bubble sort,
e rimetto le righe ordinate in un'altra tabella!

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:00
Domenica, 23/05/2010
La data non è un testo se hai impostato il tipo della colonna su Date. Potevi risolvere anche gestendo l'evento Sorting o scrivendo un Comparer personalizzato.

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 9:16
Lunedì, 24/05/2010
Testo quotato

Postato originariamente da Il Totem:

La data non è un testo se hai impostato il tipo della colonna su Date. Potevi risolvere anche gestendo l'evento Sorting o scrivendo un Comparer personalizzato.



Grazie della risposta. Se imposto la colonna del datatable su datetime,
posso visualizzare la data in formato 01/12/2010 ?8-|

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 21:00
Lunedì, 24/05/2010
Testo quotato

Postato originariamente da the_angel:

Testo quotato

Postato originariamente da Il Totem:

La data non è un testo se hai impostato il tipo della colonna su Date. Potevi risolvere anche gestendo l'evento Sorting o scrivendo un Comparer personalizzato.



Grazie della risposta. Se imposto la colonna del datatable su datetime,
posso visualizzare la data in formato 01/12/2010 ?8-|



Sì, ma non di default (a meno che l'ora non sia 12:00 o 0:00, non ricordo). Per visualizzarla sempre in formato dd/mm/yyyy dovresti gestire anche l'evento CellFormatting.

PM Quote
Avatar
the_angel (Normal User)
Expert


Messaggi: 471
Iscritto: 02/04/2009

Segnala al moderatore
Postato alle 10:40
Martedì, 25/05/2010
Grazie delle info...farò meglio nel prossimo progetto....:k:

PM Quote