Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB.NET] DataGridView e CheckBox

    Ciao a tutti. Sono nuovissimo dell'ambiente .NET quindi scusatemi perchè alcune cose proprio non mi entrano.

    Il mio problema credo che per voi sia banale:
    ho una tabella su DB da visualizzare in una griglia e per farlo ho usato AdvancedDatagridView (cercato online DatagridView con filtri e trovato questo).
    Fino a li nessun problema, creo la connessione, faccio la query sulla tabella etc etc:
    codice:
     CMD.CommandText = SQL
                Dim adapter As SqlDataAdapter = New SqlDataAdapter
                adapter.SelectCommand = CMD
                Dim table As DataTable = New DataTable
                table.Locale = System.Globalization.CultureInfo.InvariantCulture
    
                adapter.Fill(table)
    
                bindingSourceData.DataSource = table
                AdvancedDataGridView1.DataSource = bindingSourceData
                totalRow = bindingSourceData.List.Count
                scrivi_LB_total(totalRow)
                ' Automatically resize the visible rows.
                AdvancedDataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
                ' Put the cells in edit mode when user enters them.
                AdvancedDataGridView1.EditMode = DataGridViewEditMode.EditOnEnter
    
                AdvancedDataGridView1.ReadOnly = False
                For Each cols As DataGridViewColumn In AdvancedDataGridView1.Columns
                    If cols.Name <> "controllato" Then
                        cols.ReadOnly = True
                    End If
    
                Next
    La parte finale del codice mi serve per dire che solo l'ultima colonna (che può contenere solo 0 e 1) è editabile. Dopodichè se edito la cella aggiorno il DB (ma fin qui funziona e ci sono arrivato)
    Ora quello che volevo era trasformare quel 0 e 1 in un checkbox.
    Ho trovato online mille modi per aggiungere una colonna checkbox, ma io non devo aggiungerla, ma solo trasformare la colonna che si chiama PINCO in colonna di checkbox.
    E' fattibile?
    Saluti
    Rino
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,961
    Aggiungi la colonna di checkbox e programma gli eventi in modo tale che il checked modifichi la colonna PINCO

  3. #3
    E dovrei però nascondere la colonna PINCO, giusto? Come si fa? Cmq domatina provo...
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  4. #4
    Allora ho fatto la prova, sono riuscito ad aggiungere la colonna e a nascondere la colonna PINCO. Ora sicuramente facendo io a manina un ciclo per tutte le righe posso settare i valori dei checkbox, ma mi chiedevo se ci fosse un sistema più furbo. Una cosa del tipo la colonna checkbox prende i dati dalla colonna PINCO.
    Devo fare il ciclo?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  5. #5
    Quando uno dice la fortuna... mi rispondo da solo... Colonna.DataPropertyName="colonna_di_origine"
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  6. #6
    Altro problema... il discorso degli eventi per beccare se una checkbox è selezionato o no.... Pensavo che fosse una cosa semplice... ma pare di no!
    Online su MSDN ho trovato che dovrebbe essere una cosa simile a questo. In verità c'era un controllo in più che non ho capito bene:
    codice:
        Private Sub AdvancedDataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles AdvancedDataGridView1.CellContentClick
            Dim id As Integer = Integer.Parse(AdvancedDataGridView1.Item(0, e.RowIndex).Value)
            Dim newVal As Integer
            MsgInfo.AppendText("Valore cambiato nella riga  " & e.RowIndex & " e colonna " & e.ColumnIndex & vbCrLf)
    
            If e.ColumnIndex >= 0 AndAlso AdvancedDataGridView1.Columns(e.ColumnIndex).Name = "ColCheckName" Then
                Dim cell As DataGridViewCheckBoxCell = TryCast(AdvancedDataGridView1.CurrentCell, DataGridViewCheckBoxCell)
                MsgInfo.AppendText("CELL " & cell.Value & vbCrLf)
                If cell.Value = True Then
                    newVal = 1
                Else
                    newVal = 0
                End If
                MsgInfo.AppendText("Valore cambiato nella riga con ID " & id.ToString & " in " & newVal.ToString & vbCrLf)
    
                ' AdvancedDataGridView1.Item(e.ColumnIndex + 1, e.RowIndex).Value = newVal
                ' aggiornaRecord(id, newVal)
            End If
        End Sub
    Il valore che vedo a video nel MsgInfo passa da 0 a 1 ma senza un apparente collegamento al checkbox. A volte è spuntato ma mi da 1 a volte 0...
    Come mai secondo voi?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  7. #7
    Mi autorispondo anche a questo... magari mi servirà in futuro:
    codice:
        Private Sub AdvancedDataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles AdvancedDataGridView1.CellContentClick
            If e.ColumnIndex >= 0 AndAlso AdvancedDataGridView1.Columns(e.ColumnIndex).Name = "ColCheckName" Then
                Dim id As Integer = Integer.Parse(AdvancedDataGridView1.Item(0, e.RowIndex).Value)
                Dim checkbox As DataGridViewCheckBoxCell = AdvancedDataGridView1.CurrentCell
                Dim isChecked As Boolean = checkbox.EditedFormattedValue
                Dim newVal As Integer = Convert.ToInt32(isChecked)
    
                MsgInfo.AppendText("Valore " & newVal & " in riga  " & e.RowIndex & " e colonna " & e.ColumnIndex & vbCrLf)
                ' AdvancedDataGridView1.Item(e.ColumnIndex + 1, e.RowIndex).Value = newVal
                aggiornaRecord(id, newVal)
            End If
        End Sub
    Questo pare funzionare....
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  8. #8
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,961
    Quote Originariamente inviata da rinosan_76bis Visualizza il messaggio
    Quando uno dice la fortuna... mi rispondo da solo... Colonna.DataPropertyName="colonna_di_origine"
    felice che tu abbia risolto, ma questa non l'ho capita, ti dispiace mostrare il codice ?
    Ultima modifica di patel; 27-03-2020 a 09:30

  9. #9
    Ecco il codice:
    codice:
    Dim Colonna As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn()
                AdvancedDataGridView1.Columns.Insert(nCols - 1, Colonna)
                Colonna.DataPropertyName = "PINCO"
    Ovviamente come dicevo su PINCO è la colonna del DB
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  10. #10
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,961
    ma tu nella colonna PINCO hai numeri, testo o boolean ?

Tag per questa discussione

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