Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Datagridview, evento Sorted ?

    Buon giorno,

    ho un datagriview non associato , comprende di 11 colonne formato text . Ho necessità di odinare i dati delle colonne quando si fà click con il mouse sulla intestazione di colonna.. e fin qua no problem.. tranne che per alcune colonne dove sono presenti dati in formato numero che ordina come fossero testo..es.:

    1
    12
    13
    14
    15
    2
    21
    22
    3
    34
    35
    ....
    ....

    ora ho pensato di gestire l'evento pre-ordinamento, ma non ho trovato nessun evento in datagridview che permetta di gestire tale controllo.. ho visto solo l'evento SORTED() ma questo evento viene generato solo dopo che l'odinamento è stato effettuato, quindi troppo tardi!!

    esiste un evento che viene eseguito al momento del click dell'intestazione colonna così da poter gestire la cosa e magari annullare lil nomarle evento sorted?

    Grazie
    Michele

  2. #2

  3. #3
    Ciao Tas,
    grazie mille, con il secondo link (trovato anche in italiano) risolverei anche un 'altra situazione che avrei dovuto risolvere più in là, ma che ho visto posso benissimo risolvere adesso in questa fase (prendere in cosiderazione un'altra colonna se quella attuale ha valori uguali )..

    una piccola cosa che non riesco a capire, magari potresti aiutarmi:

    nell'esempio viene usato questo codice per cofrontare valori string nelle celle:

    codice:
    e.SortResult = System.String.Compare(e.CellValue1.ToString(), e.CellValue2.ToString())
    mentre nel mio caso che vorrei il confronto fosse fatto tra celle che contengono numeri??

    questo string.compare mi è nuovo!

    Grazie ancora

    Edit: ho provato a sostituire così e sembra funzionare proprio come voglio io:
    codice:
    e.SortResult = Val(e.CellValue1) - Val(e.CellValue2)

    questo è tutto il codice che differenzia per colonna.name="StanzaGrid":

    codice:
       If e.Column.Name <> "StanzaGrid" Then
                    e.SortResult = System.String.Compare(e.CellValue1.ToString(), _
                        e.CellValue2.ToString())
                Else
                    e.SortResult = Val(e.CellValue1) - Val(e.CellValue2)
                End If
    ora posso andare avanti!
    Michele

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.