tengo esta base de datos, no de mi diseño, pero tengo que trabajar con él, que contiene una tabla de este modo:cómo mostrar los valores de enumeración en la columna DataGridView
propiedadid | Name | status | ... -----+------------+----------+------ 1 | Product1 | 2 | ... 2 | Product2 | 2 | ... 3 | Product3 | 3 | ... ... | ... | ... | ...
El estado se refiere a una enumeración donde
0 = Invalid 1 = Dev 2 = Activ 3 = Old
Cuando puedo mostrar esto en un DataGridView de sólo lectura, me gustaría que el usuario vea el nombre de la enumeración (Dev, Activ, ...) o una descripción en lugar del valor numérico. El datagridview está vinculado a una tabla de datos que proviene de un DAL, una vez más no de mi diseño, por lo que realmente no puedo cambiar la tabla de datos. La única manera que he encontrado la manera de hacer que está detectando el evento datagridview.CellFormating donde pongo este código:
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;
}
}
}
Esto funciona bien, excepto que si tengo alrededor de 1k (no mucho) o más artículos , lleva una eternidad ... ¿Hay una mejor manera de hacer esto?
--- Editar ---
Esto funciona bien tal como es, mi problema es que si hay más de 1000 filas en la tabla de datos, se tarda para siempre. El problema es que el evento CellFormating se activa para cada columna, incluso para las que no la necesitan. Supongamos que muestro 15 columnas y hay 1000 filas, luego ese evento dispara 15 000 veces ...
¿Hay una mejor manera que usar el evento CellFormating? ¿O hay una forma de agregar el evento CellFormating a una sola columna? O que ?
@Oliver, K = thousand; 1K = 1,000 – Brad
Si las descripciones de estado se definen en una tabla separada, entonces puede unirse a esa tabla y devolver las descripciones como parte de los datos que debe mostrar. Este es el tipo de cosas que las bases de datos deben hacer, y me parece extraño que las soluciones propuestas impliquen iterar sobre los resultados devueltos por la base de datos. Por supuesto, este comentario se vuelve irrelevante si los datos requeridos no están en la base de datos o usted no puede insertarlos usted mismo. –
no ... lamentablemente los valores para el estado no están en la base de datos (no es mi diseño) –