+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

riempire datagridview con ciclo for

  1. #1
    SanzWeb non è in linea Novello
    Buongiorno gentili utenti del forum.

    Volevo riempire le colonne di una datagridview solo con determinati campi, non tutti quelli restituiti dal Datasource.

    Siccome volevo aggiungere un elemento visivo nella gridview nell'ultima colonna che mi caricasse un quadratino verde quando la commessa e aperta e un quadratino arancione quando è parzialmente evasa, ho optato per caricare la gridview mediante ciclo for in questo modo:

    Il problema e che mi carica tutti i dati nel primo campo ID e lascia vuoti gli altri. e
    Manca un ciclo for anche sulle colonne?

    grazie per il vostro tempo.

     Private Sub CommesseTK()
            Dim adapter As New MySqlDataAdapter
            Dim dt As New DataTable
            Dim cmdsearch As New MySqlCommand
            Dim myquery As String
            Dim bsource As New BindingSource
            Dim inImg As Image
    
            myquery = "Select idcommessetk, clientetk, codicecom, data_ordine, data_consegna, statocommessa From dbcommesse.commessetk WHERE statocommessa = 'Aperta' OR statocommessa = 'Parziale';"
    
            Using myconn As New MySqlConnection(stringaConn)
                myconn.Open()
                cmdsearch = New MySqlCommand(myquery, myconn)
                adapter.SelectCommand = cmdsearch
                adapter.Fill(dt)
                bsource.DataSource = dt
                adapter.Update(dt)
            End Using
    
            If dt.Rows.Count = 0 Then
                MessageBox.Show("Nessuna Commessa Aperta o parziale presente!")
            Else
                Dim imgcol As New DataGridViewImageColumn
                imgcol.HeaderText = "STATO"
                DGCOMMESSETK.Columns.Add(imgcol)
    
                For n As Integer = 0 To dt.Rows.Count - 1
    
                    If dt.Rows(n).Item("statocommessa") = "Aperta" Then
                        percorsoavviso &= "green.jpg"
    
                    ElseIf dt.Rows(n).Item("statocommessa") = "Parziale" Then
                        percorsoavviso &= "orange.jpg"
                    End If
    
                    If File.Exists(percorsoavviso) Then
    
                        inImg = GetImageFromFile(percorsoavviso)
    
                        DGCOMMESSETK.Rows.Add((dt.Rows(n).Item("idcommessetk"), dt.Rows(n).Item("clientetk"), dt.Rows(n).Item("codicecom"), dt.Rows(n).Item("data_ordine"), dt.Rows(n).Item("data_consegna"), inImg))
                    End If
                Next
    
            End If
        End Sub
    
    Ultima modifica di SanzWeb; 25-05-2021 16:45 

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Se assegni dt alla proprietà DataSource della Grid (che va bene) è una contraddizione con il caricamento riga per riga (che non va bene). Per visualizzare un'immagine in una colonna in funzione del valore usa l'evento CellFormatting
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    SanzWeb non è in linea Novello
    Ti ringrazio per il suggerimento Brontolo.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 15-05-2015, 18:43
  2. Risposte: 1
    Ultimo Post: 15-05-2015, 18:43
  3. Innescare un ciclo Do a seguito di un altro ciclo do... ?
    Da Dls369 nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 16-03-2012, 20:18
  4. Ciclo DO dentro un altro ciclo DO
    Da Arcor nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 22-06-2011, 00:10
  5. interrompere ciclo for dentro un ciclo while
    Da pippok nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 13-06-2011, 09:42