[英]DataBinding a DataGridview rows BackColor
我有一個DataGridView,它使用數據綁定和手動創建的列,並且工作正常。
但是我也希望行的BackColor也要進行數據綁定,到目前為止,我的嘗試都遇到了錯誤。
這是我最近的嘗試:
dataGridFileTransfer.RowHeadersVisible = false;
dataGridFileTransfer.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridFileTransfer.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridFileTransfer.MultiSelect = false;
dataGridFileTransfer.ReadOnly = true;
var files = GetReceivedFiles(false).Union(FileDetails.Select(FileStatus.FailedVerification)).ToList();
dataGridFileTransfer.AutoGenerateColumns = false;
string[] displayHeaders = new string[] { COL_NAME, COL_TYPE, COL_CREATED, COL_SIZE, COL_STATUS };
string[] displayProps = new string[] { "Filename", "FileTypeDisplayName", "Created", "Size", "FileStatus" };
for (int i = 0; i < displayHeaders.Length; i++)
{
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.HeaderText = displayHeaders[i];
col.DataPropertyName = displayProps[i];
if (displayHeaders[i] == COL_CREATED)
col.DefaultCellStyle.Format = Constants.DDMMYYYHHMMSS;
dataGridFileTransfer.Columns.Add(col);
}
Binding bi = new Binding("DefaultCellStyle.BackColor", files, "DisplayColor");
dataGridFileTransfer.DataBindings.Add(bi);
dataGridFileTransfer.DataSource = files;
這正在生成ArguementException:
“無法綁定到目標控件上的屬性“ DefaultCellStyle.BackColor”。 參數名稱:PropertyName”
是PropertyName的值錯誤,還是應該綁定到DataGridView以外的對象? (即列?)還是PropertyName不能采用XY形式的問題? 我以為我以前曾經看過/使用過這種語法,但是也許它僅適用於DataMember?
任何幫助深表感謝
我認為問題是files.DisplayColor
。 files
是一個集合,沒有屬性DisplayColor
但是集合的每個項目都有。 因此,您正在嘗試綁定不存在的屬性。 進一步的綁定集合DataGridView.DataBindings
允許您對控件(而不是其行)的屬性進行數據綁定。 所有行只有一個DataGridView.DefaultCellStyle.BackColor
。 因此,我相信您最終需要將每行的DefaultCellStyle
綁定到files
的coresponding項,而且我不確定是否可行。 可能是DataGridView
根據需要創建和刪除行(例如,如果您執行過濾),這也會破壞數據綁定。
因此,我不確定是否可以通過數據綁定完成行着色,但是我個人對此表示懷疑。 這將需要一些真正聰明的邏輯來識別“將綁定到該行的對象數據的DisplayColor
屬性綁定到該行的DefaultCellStyle.BackColor
屬性”。
您可以很好地實現這種智能數據綁定。 盡管這將是一件很棒的事情,但它也將非常復雜。 作為一個簡單的解決方案,您可以僅使用RowPrepaint
事件為行設置正確的顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.