2012-03-28 8 views
8

Ich habe eine Datagridview, die ich es, wie unten ausfüllen:ersetzen wahr/falsch in Datagridview Spalten

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

Die „IsActive“ Eigenschaft ist vom Typ Boolean. Wenn die Zelle "IsActive" angezeigt wird, zeigt sie "Wahr/Falsch" an. Ich möchte es durch meinen eigenen benutzerdefinierten Wert ersetzen.

Ich lese this und this Beiträge, aber ich konnte mein Problem nicht lösen.

Antwort

11

können Sie das CellFormatting Ereignis des DataGridView, zum Beispiel verwenden:

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 (per Kommentar):

Es ist sehr ähnlich zu dem, was Sie jetzt tun, Entfernen Sie einfach die gebundene Spalte und fügen Sie eine neue Spalte des gewünschten Typs hinzu und setzen Sie die DataPropertyName richtig zB :

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

Beachten Sie, dass dies die Spalte am Ende anhängen, aber Sie können die Position der Spalte unter Verwendung dataGridView.Columns.Insert Methode anstelle von Add entscheiden.

+0

Danke und was, wenn ich es mit meinem benutzerdefinierten Knopf ersetzen möchte? Haben Sie einen Vorschlag? Ich lese [http://msdn.microsoft.com/en-us/library/ms171619.aspx], aber ich weiß nicht, wie 'DataGridViewDisableButtonColumn' zu initialisieren, wenn Rasteransicht an Daten gebunden wird. –

+1

@persianDev: check my edit;) – digEmAll

+0

Muss die 'Enabled' Eigenschaft von 'DataGridViewDisableButtonColumn' nicht explizit initialisiert werden? –

Verwandte Themen