private void dgvForm_ColumnAdded(object sender, DataGridViewColumnEventArgs e) { if (e.Column.ValueType == typeof(byte[])) { DataGridViewColumn column = new VirtualDataGridViewColumn(e.Column); column.ValueType = typeof(string); column.Name = e.Column.Name; column.DisplayIndex = e.Column.DisplayIndex; column.CellTemplate = new DataGridViewTextBoxCell(); column.DataPropertyName = e.Column.DataPropertyName; column.SortMode = DataGridViewColumnSortMode.Programmatic; e.Column.DataGridView.Columns.Add(column); e.Column.Visible = false; } }
private void dgvForm_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridView dgv = (DataGridView)sender; if (dgv.Columns[e.ColumnIndex] is VirtualDataGridViewColumn) { VirtualDataGridViewColumn column = dgv.Columns[e.ColumnIndex] as VirtualDataGridViewColumn; DataRow dataRow = (dgv.Rows[e.RowIndex].DataBoundItem as DataRowView).Row; e.Value = dataRow[column.OriginalColumn.Name]; } if (e.Value is byte[]) { e.Value = "0x" + BitConverter.ToString(e.Value as byte[]).Replace("-", ""); e.FormattingApplied = true; } }