Tôi có một DataGridView. Tôi đặt prop .DataSource của nó là một BindingList của các đối tượng của riêng tôi: a BindingList<IChessItem>
Điều kiện DataGridView Định dạng
Sau đó tôi tạo một số cột cho nó ..
DataGridViewTextBoxColumn descColumn = new DataGridViewTextBoxColumn();
descColumn.DataPropertyName = "Description";
descColumn.HeaderText = "Description";
descColumn.Width = 300;
DataGridViewTextBoxColumn gameIDColumn = new DataGridViewTextBoxColumn();
gameIDColumn.DataPropertyName = "GameID";
gameIDColumn.HeaderText = "Game ID";
gameIDColumn.Width = 60;
dataGrid.Columns.Add(descColumn);
dataGrid.Columns.Add(gameIDColumn);
Câu hỏi của tôi là .. Tôi muốn màu sắc một trong các cột GREEN dựa trên dữ liệu trong một lĩnh vực khác của BindingList của tôi). Tôi có thể làm cái này như thế nào?
Tôi không thực sự phải thể hiện lĩnh vực này, tôi chỉ muốn hành động theo các dữ liệu trong nó ..
trong trường hợp của tôi, một trong những lĩnh vực IChessItem cho thấy cho dù kỷ lục mới, và tôi muốn tô màu các trường khác trong datagridview để phản ánh điều đó.
thú vị. Điều này có vẻ như nó sẽ làm việc, thật không may, this.dataGridView1.Columns [e.ColumnIndex] .Name trả về "" bất cứ khi nào nó được ở đây. Có vẻ như nó * nên * làm việc tho. – KevinDeus
okok .. Tôi nhận được nó để làm việc bằng cách sử dụng .DataPropertyName (kể từ khi được thiết lập trong mã của tôi ở trên), và chỉ nó trở lại mục datagrid (như sourcelist của tôi đã bị xóa bởi điểm này ..) IChessItem item = ((BindingList) this.dgvAvailableMoves.DataSource) [e.RowIndex]; –
KevinDeus
Cách tiếp cận mạnh mẽ hơn là so sánh trực tiếp với cột thay vì kiểm tra tên cột, nghĩa là 'if (dataGridView.Columns [e.ColumnIndex] == dataGridViewColumnXXX) ...' –