2012-03-28 8 views
8

Mam DataGridView którą wypełnić go jak poniżej:zastąpić prawda/fałsz w kolumnach 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"; 

W „IsActive” własność jest typu Boolean. Gdy wyświetlana jest komórka "IsActive", pokazuje ona wartość true/false. Chcę go zastąpić moją własną wartością niestandardową.

Przeczytałem this i this stanowisk, ale nie mogłem rozwiązać mojego problemu.

Odpowiedz

11

Można użyć zdarzenia CellFormatting z DataGridView, np

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 (jak w komentarzu):

Jest bardzo podobny do tego, co robisz teraz, po prostu usuń związaną kolumnę i dodaj nową kolumnę odpowiedniego typu i odpowiednio ustaw DataPropertyName :

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

Zauważ, że to dołącz kolumnę na końcu, ale można zdecydować pozycję kolumny za pomocą dataGridView.Columns.Insert metodę zamiast Add.

+0

Dzięki i co jeśli chcę zastąpić go moim niestandardowym przyciskiem? Czy masz jakieś sugestie? Przeczytałem [http://msdn.microsoft.com/en-us/library/ms171619.aspx], ale nie wiem jak zainicjować "DataGridViewDisableButtonColumn" podczas wiązania widoku siatki do danych. –

+1

@persianDev: sprawdź moją edycję;) – digEmAll

+0

Czy nie ma potrzeby jawnego inicjowania właściwości "Enabled" obiektu "DataGridViewDisableButtonColumn"? –