2012-03-28 84 views
8

我有一個DataGridView,我往裏面如下:在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"; 

的「IsActive」屬性是布爾類型的。當顯示「IsActive」單元格時,它顯示true/false。我想用我自己的自定義值替換它。

我看過thisthis的帖子,但我無法解決我的問題。

回答

11

您可以使用CellFormatting事件DataGridView,例如:

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(按評論):

這是非常相似,你現在在做什麼,只需刪除綁定列並添加所需類型的新列並正確設置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); 

注意,這個附加列在最後,但你可以通過使用dataGridView.Columns.Insert方法,而不是Add決定列的位置。

+0

謝謝,如果我想用我的自定義按鈕替換它,該怎麼辦?有什麼建議嗎?我讀[http://msdn.microsoft.com/en-us/library/ms171619.aspx]但我不知道如何初始化'DataGridViewDisableButtonColumn'綁定網格視圖時的數據。 – 2012-03-29 08:45:51

+1

@persianDev:檢查我的編輯;) – digEmAll 2012-03-29 17:15:48

+0

是否需要顯式初始化'DataGridViewDisableButtonColumn'的'Enabled'屬性? – 2012-03-29 18:04:42