DataGridView, visualizzare su colonne e righe

di il
7 risposte

DataGridView, visualizzare su colonne e righe

Buongiorno a tutti, non riesco a capire come funziona DataGridView..

Mi spiego meglio… ho un'array (ad esempio cella(x, y) e vorrei visualizzare questi dati in un DataGridView formata da 5 colonne e 5 righe.

Se inserisco il seguente codice però, anziché visualizzare in tutte e 25 celle, mi vengono visualizzati solo sulla prima colonna.. come mai? Grazie!!

For x As Integer = 0 To 4
                For y As Integer = 0 To 4
                    DataGridView1.Rows.Add(cella(x, y))
                Next
            Next

7 Risposte

  • Re: DataGridView, visualizzare su colonne e righe

    Prova questo

    For y As Integer = 0 To 4
        DataGridView1.Rows.Add(cella(0, y), cella(1, y), cella(2, y), cella(3, y), cella(4, y))
    Next

    Se devi visualizzare 5 righe devi fare 5 volte il comando Rows.Add, invece con il tuo codice lo fai 25 volte
    Con Rows.Add aggiungi una riga, per cui dentro al Rows.Add devono esserci i dati di tutte le celle della riga

  • Re: DataGridView, visualizzare su colonne e righe

    Grazie,

    quindi non si può fare in maniera modulare? intendo dire….siccome l'array sarà di valori variabili (potrà essere ad esempio tipo cella(3, 3) come potrà anche essere cella(6, 2), facendo come dici tu però funziona sicuramente con valori fissi…

    un'altra domanda.. se io volessi scrivere un determinato valore in una specifica cella del DataGridView (esempio nella seconda colonna, alla terza riga), non si può fare? Grazie davvero!!

     
  • Re: DataGridView, visualizzare su colonne e righe

    Eccoti un codice semplice per capire come creare una DataGridView partendo da un array di cui non conosci le dimensioni.
    Il codice non è ottimizzato, ma ho cercato di renderlo semplice in modo che tu ti possa studiarlo e capirlo.

            ' --------------------------------------------------
            Dim cella(5, 4) As Integer ' creo l'array X,Y
            ' popolo l'array "cella" con dei numeri
            For y = 0 To 4
                For x = 0 To 5
                    cella(x, y) = (y * 6 + x) + 1
                Next
            Next
            ' --------------------------------------------------
    
            ' creo le colonne in base alla dimensione X dell'array
            For x = 0 To cella.GetUpperBound(0)
                DataGridView1.Columns.Add("Col" & x.ToString, "Col " & x.ToString)
            Next
    
            ' ora popolo la DataGridView non sapendo la dimensione dell'array "cella"
            For y = 0 To cella.GetUpperBound(1)
                Dim lista = New List(Of Object)
                For x = 0 To cella.GetUpperBound(0)
                    lista.Add(cella(x, y))
                Next
                DataGridView1.Rows.Add(lista.ToArray)
            Next

    La prima parte è la creazione dell'array cella e il suo popolamento, l'ho fatto per poter aver dei dati su cui provare, poi ovviamente a te non serve.

    P.s.: con cella.GetUpperBound(0) mi ricavo la dimensione di cella(X), con cella.GetUpperBound(1) la dimensione di cella(Y)

  • Re: DataGridView, visualizzare su colonne e righe

    07/09/2023 - Marco G1975 ha scritto:


    se io volessi scrivere un determinato valore in una specifica cella del DataGridView (esempio nella seconda colonna, alla terza riga), non si può fare? Grazie davvero!! 

            ' scrivo sulla seconda colonna della terza riga
            DataGridView1.Rows(2).Cells(1).Value = "Good bye"
  • Re: DataGridView, visualizzare su colonne e righe

    07/09/2023 - SirJo ha scritto:


    Eccoti un codice semplice per capire come creare una DataGridView partendo da un array di cui non conosci le dimensioni.
    Il codice non è ottimizzato, ma ho cercato di renderlo semplice in modo che tu ti possa studiarlo e capirlo.

            ' --------------------------------------------------
            Dim cella(5, 4) As Integer ' creo l'array X,Y
            ' popolo l'array "cella" con dei numeri
            For y = 0 To 4
                For x = 0 To 5
                    cella(x, y) = (y * 6 + x) + 1
                Next
            Next
            ' --------------------------------------------------
    
            ' creo le colonne in base alla dimensione X dell'array
            For x = 0 To cella.GetUpperBound(0)
                DataGridView1.Columns.Add("Col" & x.ToString, "Col " & x.ToString)
            Next
    
            ' ora popolo la DataGridView non sapendo la dimensione dell'array "cella"
            For y = 0 To cella.GetUpperBound(1)
                Dim lista = New List(Of Object)
                For x = 0 To cella.GetUpperBound(0)
                    lista.Add(cella(x, y))
                Next
                DataGridView1.Rows.Add(lista.ToArray)
            Next

    La prima parte è la creazione dell'array cella e il suo popolamento, l'ho fatto per poter aver dei dati su cui provare, poi ovviamente a te non serve.

    P.s.: con cella.GetUpperBound(0) mi ricavo la dimensione di cella(X), con cella.GetUpperBound(1) la dimensione di cella(Y)

    Fantastico!!! Ha funzionato perfettamente!!! Erano giorni che ero bloccato così!! Hai una birra virtuale pagata!!

  • Re: DataGridView, visualizzare su colonne e righe

    07/09/2023 - SirJo ha scritto:


    07/09/2023 - Marco G1975 ha scritto:


    se io volessi scrivere un determinato valore in una specifica cella del DataGridView (esempio nella seconda colonna, alla terza riga), non si può fare? Grazie davvero!! 

            ' scrivo sulla seconda colonna della terza riga
            DataGridView1.Rows(2).Cells(1).Value = "Good bye"

    Anche questa è perfetta!! non sai quanto ho cercato!! GRAZIEEE :-)

  • Re: DataGridView, visualizzare su colonne e righe

    Scusami, ne approfitto: il Form principale, che contiene il DataGridView ha una certa dimensione iniziale (esempio 400x400).

    Ho messo l'opzione per caricare un file esterno (un file excel) e quindi carica le celle di excel e le trasla sul DataGridView. Quindi il DataGridView può avere dimensioni diverse, a seconda del file caricato (può avere 2 colonne e 2 righe, come 20 colonne e 20 righe). Mi piacerebbe che il Form cambiasse automaticamente la sua dimensione a seconda di quanto è grande il DataGridView in modo tale che non si debba usare lo scroll… è fattibile?

Devi accedere o registrarti per scrivere nel forum
7 risposte