2012-03-28 3 views
8

ho un datagridview che io riempio come qui sotto:sostituire vero/falso in DataGridView Colonne

var q= repository.GetStudents();// 

dataGridView1.DataSource = null; 
dataGridView1.Columns.Clear(); 

dataGridView1.DataSource = q; 

dataGridView1.Columns.RemoveAt(1); 
//Remove IsActive 
//Cause I want to have my own implementation 

dataGridView1.Columns[0].DataPropertyName = "StudentID"; 
dataGridView1.Columns[0].HeaderText = "Studunet ID"; 

dataGridView1.Columns[1].DataPropertyName = "IsActive"; 
dataGridView1.Columns[1].HeaderText = "Status"; 

La proprietà "IsActive" è di tipo booleano. Quando viene visualizzata la cella "IsActive", mostra true/false. Voglio sostituirlo con il mio valore personalizzato.

Ho letto this e this post ma non ho potuto risolvere il mio problema.

risposta

11

È possibile utilizzare l'evento CellFormatting del DataGridView, ad esempio:

void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    var grid = (DataGridView)sender; 
    if (grid.Columns[e.ColumnIndex].Name == "IsActive") 
    { 
     e.Value = (bool)e.Value ? "MY_TEXT_FOR_TRUE" : "MY_TEXT_FOR_FALSE"; 
     e.FormattingApplied = true; 
    } 
} 

EDIT (come da commento):

E 'molto simile a quello che stai facendo ora, basta rimuovere la colonna rilegata e aggiungere una nuova colonna del tipo desiderato e impostare correttamente DataPropertyName ad es. :

this.dataGridView1.Columns.Remove("COL_TO_CUSTOMIZE"); 
var btnCol = new DataGridViewDisableButtonColumn(); 
btnCol.Name = "COL_TO_CUSTOMIZE"; 
btnCol.DataPropertyName = "COL_TO_CUSTOMIZE"; 
var col = this.dataGridView1.Columns.Add(btnCol); 

Si noti che questo accoda la colonna alla fine, ma è possibile decidere la posizione della colonna utilizzando il metodo dataGridView.Columns.Insert invece di Add.

+0

Grazie e cosa succede se voglio sostituirlo con il mio pulsante personalizzato? Hai qualche suggerimento? Ho letto [http://msdn.microsoft.com/en-us/library/ms171619.aspx] ma non so come inizializzare 'DataGridViewDisableButtonColumn' durante l'associazione della vista griglia ai dati. –

+1

@persianDev: controlla la mia modifica;) – digEmAll

+0

Non è necessario inizializzare esplicitamente la proprietà 'Enabled' di 'DataGridViewDisableButtonColumn'? –