Pregunta

En nuestra aplicación tenemos hojas de estilo para definir colores comunes, etc. Escribí una función rápida y sucia donde obtengo un conjunto de datos de un procedimiento almacenado, recorte las columnas que no quiero mostrar, las meto en un DataGrid generado mediante programación, establece los estilos de ese DataGrid y luego lo exporta a Excel. A todos les encantan los colores en la salida de Excel (¡Guau! Coinciden con los colores de DataGrid, bla, bla, bla ...).
Mi último artículo que me gustaría agregar es que me gustaría acceder mediante programación a un estilo y tomar códigos de color y otros elementos de él (.IntranetGridHead) en lugar de codificarlos de forma rígida, que es lo que estoy haciendo ahora.

int iHeaderColor = Convert.ToInt32 ("D0D7E8", 16);
DataGrid dg = new DataGrid();
dg.DataSource = dsReturnDataSet.Tables[0].DefaultView;
dg.DataBind();

dg.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(iHeaderColor);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.Font.Size = 10;

Obviamente, cada vez que la empresa pasa por otro "cambio de marca" y los valores de la hoja de estilo cambian, los colores de Excel coincidirán automáticamente y obtendré una gran (palmada en la parte posterior | cookie).

¿Algún pensamiento de la gente de C # que sepa más que yo (que sería la mayoría de ustedes ...)? Gracias,
Michael

¿Fue útil?

Solución

Todos los objetos Web.UI.Control tienen una propiedad .Styles, a la que se puede acceder como Estilos [" Nombre "]. Por lo tanto puedes hacer esto:

DataTable dt = LookupStyles();
dg.Styles.Clear();
foreach (DataRow dr in dt.Rows)
  dg.Styles.Add(dr["StyleName"].ToString(), dr["StyleValue"].ToString());

Hace varios meses tuve una idea similar :) Nota: para que esto funcione correctamente, tu cuadrícula debe ser runat = " servidor " ;.

Editar: Parece que quieres LEER la cuadrícula y usar eso ... Si estás usando un .CssStyle y una Hoja de estilo (.css), tendrás que hacer un HTTP GET para ese archivo css y analizarlo tú mismo.

Otros consejos

Tendría que analizar el archivo CSS usted mismo, e IIRC no hay un analizador de archivos CSS en el marco .NET de la caja. Sin embargo, hay uno gratuito que puedes encontrar aquí:

http://www.codeproject.com/KB/recipes/CSSParser.aspx

Entonces deberías poder usar esto para analizar el archivo CSS. Desde allí, debería poder obtener el estilo y el valor y aplicarlo a su cuadrícula de datos.

Hace un tiempo escribí algo en este sentido. Se trataba de un HttpHandler para tratar los archivos CSS, un cambio en la configuración de IIS para que asp.net recibiera las solicitudes de los archivos CSS y una estructura de archivos XML simple que contenía mis definiciones de color. Pero lo has hecho con una base de datos, lo cual también está bien.

Luego en el CSS tuve algo como esto ...

.button
{
    background-color: $colours:button-background-colour;
    color: $colours:button-text-colour;
}

con mi xml definiendo los valores para button-background-color y button-text-color. Utilicé el reemplazo de texto de expresiones regulares para procesar el archivo CSS que sustituye los valores relevantes del archivo xml.

Estoy seguro de que podrías tomar algunas de esas ideas y combinarlas con tu código existente para obtener el efecto deseado. Por supuesto, deberá lidiar con el almacenamiento en caché y los cambios en su base de datos / archivo xml.

Espero que ayude.

Si necesita alguna sugerencia sobre algo de eso, estoy seguro de que puedo extraer algún código de ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top