Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    19

    [vb net] ordinamento colonne

    ciao a tutti ho un problema, presumo di logica in vb net..

    lo scopo è questo:

    ho una datagridview con 16 colonne. Tutte le colonne sono ordinabili orizzontalmente dall'utente . io vorrei mantenere l'ordine tra una esecuzione e l'altra del programma.

    quindi ho pensato..
    all'uscita della form eseguo una funzione che mi carica in un my.setting stringa l'ordine scelto per le colonne..

    per esempio: 0,1,3,2,4 ==> questo vuol dire che la colonna 0 è la prima a essere visualizzata, la colonna 1 la seconda, la colonna 2 la terza e la colonna 3 la quseconda e la colonna 4 la quinta.. ricordando che gli indici delle colonne partono da 0..

    poi all'apertura della form analizzo la stringa e carico nell'attributo displayindex di tutte le colonne l'indice di visualizzazione salvato nel setting..

    però va solo se faccio ordinamenti semplici.. tipo quello di esempio.. se invece faccio cose complicate.. io ho 16 colonne.. nn funziona correttamente..

    vi posto il codice delle due funzioni.. se potete , per favore, aiutatemi..

    codice:
     Private Sub SalvaOrdineColonne()
            My.Settings.OrdineColonne = ""
            For i = 0 To RisultatoQuery.Columns.Count - 1
                My.Settings.OrdineColonne = My.Settings.OrdineColonne & RisultatoQuery.Columns(i).DisplayIndex & ","
            Next
            My.Settings.OrdineColonne = My.Settings.OrdineColonne.Remove(My.Settings.OrdineColonne.LastIndexOf(","))
            My.Settings.Save()
        End Sub
    codice:
    Private Sub CaricaOrdineColonne()
            If My.Settings.OrdineColonne = "" Then Exit Sub
            Dim Index(16) As String
    
            Index = Split(My.Settings.OrdineColonne, ",")
    
    
            For i = 15 To 0 Step -1
    
                RisultatoQuery.Columns(i).DisplayIndex = Index(i)
            Next
        End Sub

  2. #2

    Re: [vb net] ordinamento colonne

    Originariamente inviato da Skiaa
    però va solo se faccio ordinamenti semplici.. tipo quello di esempio.. se invece faccio cose complicate.. io ho 16 colonne.. nn funziona correttamente..
    Il "nocciolo" della questione è proprio qui..che significa "cose complicate"?

    Apparentemente va tutto bene, l'unico "errore" che vedo è questo:
    codice:
    Dim Index(16) As String
    RisultatoQuery.Columns(i).DisplayIndex = Index(i)
    Praticamente assegni un dato di tipo String ad una proprietà che necessita dati numerici (che siano Byte , Integer o altro, non ricordo ora..); valuta questo discorso e, anche se non è questo il problema, è sempre apprezzabile la correttezza formale (anche se il compilatore non da errori)


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    19
    per cose complicate intendo quando iniziano a spostare più di una colonna.. magari una la spostano a destra, una a sinistra.. una tra le due spostate..

    sembra che dopo che io ho assegnato gli indici alla proprietà displayindex faccia qualcos'altro perchè gli assegnamenti sono giusti.. ma con il debug vedo che fa le cose corrette quindi nn è una porzione di codice che ho scritto io che fa a modificare ulteriormente l'ordinamento..

  4. #4
    Riguardando la procedura, secondo me l'errore deriva proprio da come imposti la proprietà nel ciclo for-next :

    codice:
    Dim c As Integer = -1
    For i = 15 To 0 Step -1
        c = c + 1
        DataGridView1.Columns(Index(i)).DisplayIndex = c
    Next i
    Ovviamente ordinando correttamente la matrice Index.


    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    19
    grazie per le risposte MdE2005,

    ho trovato qual è il problema!

    il problema era che la mia datagridview è associata a un dataset! in pratica il codice era giusto ma avendola associata a un dataset la datagridview aveva la proprietà AutoGenerateColumns impostata a true e in pratica dopo che gli avevo impostato i displayindex giusto il framework nel design fa altre procedure a quanto ho capito e me le andava a cambiare.. nn ho capito con che logica purtroppo..

    me ne sono accorto perchè nell'avento dplayindexchanged ho messo un msgbox e ho visto che oltre a entrarci giustamente quando io eseguivo la mia funzione ci entrava anche dopo..

    impostando la proprità AutoGenerateColumns a false dopo che aveva già creato le colonne prese dal dataset e prima che facessi eseguire la mia funzione dove ordine le colonne, funziona!!

    adesso devo solo capire se questo mi crea altri problemi però almeno l'ordinamento viene eseguito in maniera corretta!

    grazie ancora!

  6. #6
    Originariamente inviato da Skiaa
    adesso devo solo capire se questo mi crea altri problemi però almeno l'ordinamento viene eseguito in maniera corretta!
    grazie ancora!
    In teoria proprio no..


    Prego


    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.