2012-12-10 5 views
5

Ho una dataGridView in una WinForm, ho aggiunto al DataGrid una colonna con una casella di controllo utilizzando un codice che ho visto qui:DataGridView con una casella di controllo con il valore di default controllato

DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn(); 
    { 
     column.HeaderText = "Export"; 
     column.Name = "Export"; 
     column.AutoSizeMode = 
      DataGridViewAutoSizeColumnMode.DisplayedCells; 
     column.FlatStyle = FlatStyle.Standard; 
     column.CellTemplate = new DataGridViewCheckBoxCell(false); 
     column.CellTemplate.Style.BackColor = Color.White; 
    } 

    gStudyTable.Columns.Insert(0, column); 

questo funziona, ma voglio la casella di controllo da verificare come sega predefinita ho aggiunto:

foreach (DataGridViewRow row in gStudyTable.Rows) 
    {     
     row.Cells[0].Value = true; 
    } 

ma la casella di controllo è ancora deselezionata. Sto usando una raccolta come mia fonte di dati e cambio il valore della colonna dopo aver aggiunto l'origine dati.

+0

Si potrebbe provare a modificare la raccolta dell'origine dati anziché il valore della cella stessa. Qualcosa come 'dataSourceCollection [0] .Export = true' ecc ... –

+0

la casella di spunta non fa parte della mia origine dati – meirrav

+0

puoi impostare il valore della casella di controllo su true ogni volta che l'evento DataBindingComplete di datagrid viene generato: http: //social.msdn. microsoft.com/Forums/en/csharplanguage/thread/2c7fe077-095e-472f-9833-c0633eb7035f – Mate

risposta

9

Penso che non ci sia modo di impostare il valore verificato sulla dichiarazione di colonna. Si dovrà a irerate righe controllo dopo DataSource è impostata (per esempio in DataBindingComplete evento):

for (int i = 0; i < dataGridView1.Rows.Count -1; i++) 
{ 
dataGridView1.Rows[i].Cells[0].Value = true; 
} 

Con il tuo nome colonna:

for (int i = 0; i < dataGridView1.Rows.Count -1; i++) 
{ 
    dataGridView1.Rows[i].Cells["Export"].Value = true; 
} 
+0

Questo funziona ottimo, grazie – meirrav

+0

siete i benvenuti :) –

+1

Si applica a tutte le righe tranne l'ultima. Per favore cambia il ciclo for in: for (int i = 0; i dsmyrnaios

3

provare a farlo in questo modo:

foreach (DataGridViewRow row in dgv.Rows)  
{ 
    row.Cells[CheckBoxColumn.Name].Value = true;  
} 
0

È possibile utilizzare datatable e creare colonne in datagridview e quindi aggiungere righe, a condizione che il primo valore di colonna sia 'T rue 'o' False 'per ogni riga.

provare questo

0

se ((bool) this.dataGridView2.Rows [i] .Cells [0] .FormattedValue == true)

+1

Probabilmente vorrai inserire risposte brevi come questa come commenti in futuro. –

0

Durante o dopo il carico del valore in una griglia, per il controllo il valore nella griglia di questo codice e impostare le proprietà di colonna di griglia

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    row.Cells[0].Value = 1; 
} 

enter image description here

-2

Un modo semplice è quello di utilizzare la proprietà NewRowIndex come illustrato di seguito:

dvgInvoiceItems.Rows[dvgInvoiceItems.NewRowIndex-1].Cells[5].Value = true; 
dvgInvoiceItems.Rows[dvgInvoiceItems.NewRowIndex-1].Cells[6].Value = true;