2012-03-28 31 views
8

Tôi có một datagridview mà tôi điền vào nó như sau:thay thế đúng/sai trong các cột 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"; 

Các "IsActive" tài sản là của boolean Loại. Khi ô "IsActive" đang được hiển thị, nó hiển thị true/false. Tôi muốn thay thế nó bằng giá trị tùy chỉnh của riêng tôi.

Tôi đọc thisthis bài đăng nhưng tôi không thể giải quyết được sự cố của mình.

Trả lời

11

Bạn có thể sử dụng các sự kiện CellFormatting của DataGridView, ví dụ:

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 (theo bình luận):

Nó rất giống với những gì bạn đang làm gì bây giờ, chỉ cần xóa cột bị ràng buộc và thêm cột mới của loại mong muốn và đặt DataPropertyName đúng ví dụ :

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

Lưu ý rằng đây thêm cột ở cuối, nhưng bạn có thể quyết định vị trí của các cột bằng cách sử dụng phương pháp dataGridView.Columns.Insert thay vì Add.

+0

Cảm ơn và nếu tôi muốn thay thế bằng nút tùy chỉnh của mình thì sao? Bạn có gợi ý nào không? Tôi đọc [http://msdn.microsoft.com/en-us/library/ms171619.aspx] nhưng tôi không biết làm thế nào để khởi tạo 'DataGridViewDisableButtonColumn' khi ràng buộc xem lưới dữ liệu. –

+1

@persianDev: kiểm tra chỉnh sửa của tôi;) – digEmAll

+0

Không có bất kỳ cần phải khởi tạo một cách rõ ràng thuộc tính 'Đã bật' của 'DataGridViewDisableButtonColumn'? –

Các vấn đề liên quan