У меня есть эта база данных, не моего дизайна, но я должен работать с ней, которая содержит следующую таблицу:
id | Name | status | ...
-----+------------+----------+------
1 | Product1 | 2 | ...
2 | Product2 | 2 | ...
3 | Product3 | 3 | ...
... | ... | ... | ...
Свойство status ссылается на перечисление, где
0 = Invalid
1 = Dev
2 = Activ
3 = Old
Когда я отображаю это в виде таблицы только для чтения, я бы хотел, чтобы пользователь видел имя перечисления (Dev, Activ, ...) или описание вместо числового значения. Сетка данных связана с таблицей данных, полученной из DAL, опять же не моего дизайна, поэтому я не могу реально изменить таблицу данных. Единственный способ, который я нашел, как это сделать, это прослушать событие datagridview.CellFormating, где я поместил этот код:
private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 3) // column of the enum
{
try
{
e.Value = getEnumStringValue(e.Value);
}
catch (Exception ex)
{
e.Value = ex.Message;
}
}
}
Это прекрасно работает, за исключением того, что если у меня есть около 1k (не так много) или больше предметов, это займет вечность ...
Есть ли лучший способ сделать это?
--- Редактировать ---
Это работает отлично, как есть, моя проблема заключается в том, что если в таблице данных содержится более 1000 строк, это займет вечность. Проблема в том, что событие CellFormating запускается для каждого столбца, даже для тех, которые в нем не нуждаются. Допустим, я отображаю 15 столбцов, и есть 1000 строк, тогда это событие запускается 15 000 раз ...
Есть ли лучший способ, чем использовать событие CellFormating? Или есть способ добавить событие CellFormating только в один столбец? Или что?