Ordinare DGV con campo DataGridViewCheckBoxColumn

di il
3 risposte

Ordinare DGV con campo DataGridViewCheckBoxColumn

Salve ragazzi,

ho una datagridview con 4 colonne.
La prima colonna e una checkboxcolumn che si chiama "cSel"
In fase di apertura della dgv alcune colonne vengono selezionate in modo automatico.
Volevo mettere in testa alla dgv le righe selezionate mentre quelle non selezionate, ovviamente, in coda.
Ho usato il comando:

dgv1.Sort(cSel, System.ComponentModel.ListSortDirection.Descending)
Ho utilizzato in passato questo comando senza nessun problema, ma purtroppo oggi, mi ha restituito il seguente errore:

L'oggetto deve essere di tipo Boolean.

Questo errore mi viene restituito anche quando premo nell'header della colonna cSel ma solo dopo avere spuntato una o più righe.

Ho controllate la dgv del codice del programma dove mi funziona ma non riesco a capire cosa ci sia di differente nelle due datagridview.

Grazie a tutti

3 Risposte

  • Re: Ordinare DGV con campo DataGridViewCheckBoxColumn

    La colonna con le checkbox deve essere popolata con valori boolean. mostra il codice con cui crei la dgv e la popoli.
    Forse ti conviene prima popolare la dgv e poi aggiungere la CheckBoxColumn
  • Re: Ordinare DGV con campo DataGridViewCheckBoxColumn

    La Datagridview viene popolata da una query con il seguente codice.
    
     While RD.Read
                dgv1.Rows.Add("false", RD("campo1").trim.ToString, RD("campo2").ToString.Trim, RD("campo3").ToString.Trim
            End While
    
    Il campo1 è il campo che contiene la seleziona e in fase di popolamento lo imposta a false. Il tipo colonna è: DataGridViewCheckBoxColumn.
  • Re: Ordinare DGV con campo DataGridViewCheckBoxColumn

    Sono riuscito a capire l'ORRORE:
    
    While RD.Read
                dgv1.Rows.Add("false", RD("campo1").trim.ToString, RD("campo2").ToString.Trim, RD("campo3").ToString.Trim
            End While
    
    Ho messo false tra apici…………
    Dunque il codice corretto è:
    
    While RD.Read
                dgv1.Rows.Add(false, RD("campo1").trim.ToString, RD("campo2").ToString.Trim, RD("campo3").ToString.Trim
            End While
    
    Mentre per l'ordinamento:
    
          dgv1.Sort(NomeCampoDaOrdinare, System.ComponentModel.ListSortDirection.Descending)
    
    dov NomeCampoDaOrdinare è ovviamente il nome del campo della datagridview che voglio ordinare. In questo caso quello che contiene il segno di spunta, ovvero true o false.

    Grazie Patel per la risposta e per l'aiuto che mi ha portato a trovare il mio errore.
Devi accedere o registrarti per scrivere nel forum
3 risposte