2012-03-28 29 views
8

tengo un DataGridView, que la colmo de la siguiente manera:reemplazar verdadero/falso en columnas DataGridView

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 propiedad "IsActive" es de tipo boolean. Cuando se muestra la celda "IsActive", muestra verdadero/falso. Quiero reemplazarlo con mi propio valor personalizado.

Leí this y this publicaciones pero no pude resolver mi problema.

Respuesta

11

Usted puede utilizar el evento CellFormatting del DataGridView, por ejemplo:

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; 
    } 
} 

EDITAR (según el comentario):

Es muy similar a lo que está haciendo ahora, simplemente elimine la columna encuadernada y agregue una nueva columna del tipo deseado y configure el DataPropertyName correctamente, por ejemplo :

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); 

Tenga en cuenta que este anexar la columna al final, pero se puede decidir la posición de la columna mediante el uso de dataGridView.Columns.Insert método en lugar de Add.

+0

Gracias y qué pasa si quiero reemplazarlo con mi botón personalizado? ¿Tienes alguna sugerencia? Leí [http://msdn.microsoft.com/en-us/library/ms171619.aspx] pero no sé cómo inicializar 'DataGridViewDisableButtonColumn' al vincular la vista de cuadrícula a los datos. –

+1

@persianDev: verifique mi edición;) – digEmAll

+0

¿No hay necesidad de inicializar explícitamente la propiedad 'Habilitada' de 'DataGridViewDisableButtonColumn'? –