Вы можете обрабатывать дело, используя различные решения, в том числе:
- Использование DataGridViewComboBoxColumn (→ Предпочтителен, если вам нужно редактирование)
- Использование CellFormatting (→ Предпочтителен, если вам не нужноредактирование)
- Изменение запроса на возврат отформатированных данных (→ полезно для данных только для чтения)
Вариант 1 - использование DataGridViewComboBoxColumn
Добавить DataGridViewComboBoxColumn
:
var c = new DataGridViewComboBoxColumn();
c.DataPropertyName = "Column1"; //Name of your data column
c.HeaderText = "Column1"; //Header text of your data column
c.DataSource = new[] {
new { Key = 0, Name = "Low" },
new { Key = 1, Name = "High" } }.ToList();
c.ValueMember = "Key";
c.DisplayMember = "Name";
c.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
//You can try other styles as well as setting `ReadOnly` to true
dataGridView1.Columns.Add(c);
Вариант 2 - Использование форматирования ячеек
Другой вариант будет использовать событие CellFormatting
:
dataGridView1.CellFormatting += (obj, args) =>
{
try
{
var value = Convert.ToInt32(args.Value);
if (value == 0)
args.Value = "Low";
if (value == 1)
args.Value = "High";
return;
}
catch (Exception) { }
args.Value = "Unknown";
};
Вариант 3 - Изменить запрос
Вы можете изменить свой запрос для получения отформатированных данных, например, используя CASE
:
SELECT CASE [YourColumn] WHEN 1 THEN 'High' WHEN 2 THEN 'Low' END AS Column1
FROM [YourTable]
Пример вывода
Для всех вышеперечисленных кодов вы можете загрузить данные из базы данных или просто для проверки использовать следующие тестовые данные: *
var dt = new DataTable();
dt.Columns.Add("Column1", typeof(int));
dt.Rows.Add(1);
dt.Rows.Add(0);
dt.Rows.Add(0);
dt.Rows.Add(1);
и убедиться, что вы установили источник данных:
dataGridView1.DataSource = dt;
![enter image description here](https://i.stack.imgur.com/olxIC.png)