Control de gráficos ASP.NET: los primeros gráficos se muestran en blanco en la primera carga de la página

Tengo una página que genera cuatro gráficos usando el control de gráficos ASP.NET 4.0 y los muestra. Los gráficos se crean en el código subyacente en Carga de página y se agregan a una tabla en la página.

Mi problema es que cuando se carga la página, los primeros 1 o más gráficos (generalmente solo uno, pero a veces 2 o 3) están en blanco (el usuario obtiene un cuadro vacío delineado del tamaño del gráfico con una X roja en la parte superior izquierda esquina).

Actualizar la página hace que todos los gráficos se representen correctamente.

¿Alguna idea sobre cómo hacer que los gráficos se completen en la primera pasada?

Aquí está el código que genera un gráfico y lo agrega a la página (la rutina que contiene este código se llama 4 veces). Tenga en cuenta que el objeto 'puntos' contiene una colección de pares Nombre-Valor, donde el Nombre es la Etiqueta que se mostrará en el eje X, y el Valor es el valor numérico del Eje Y:

Chart graph = new Chart();
graph.Width = 800;
graph.Height = 400;
Series series = new Series();
series.Name = "Series1";
series.Palette = ChartColorPalette.Bright;
series.IsXValueIndexed = true;
for (int j = 0; j < points.Count; j++)
{
    DataPoint dataPoint = new DataPoint(j+1.0, points.GetItem(j).Value);
    dataPoint.AxisLabel = points.GetItem(j).Name.Trim();                    
    series.Points.Add(dataPoint);
}
graph.Series.Add(series);
ChartArea chartArea = new ChartArea();
chartArea.Name = "ChartArea1";
chartArea.AxisX.Interval = 1;
chartArea.AxisY.LabelStyle.Format = "###,###,###,###";
graph.ChartAreas.Add(chartArea);
graph.Titles.Add(caption);

TableRow tr = new TableRow();
TableCell td = new TableCell();
td.Width = new Unit(100.0, UnitType.Percentage);
tblGraph.Rows.Add(tr);
tr.Cells.Add(td);
td.Controls.Add(graph);

preguntado el 03 de mayo de 12 a las 20:05

2 Respuestas

Mismo problema aquí. Las imágenes del gráfico ESTÁN escritas en el sistema de archivos, pero esto sucede aproximadamente 20 ms después de que se procesa la página. Si pone el código en modo de suspensión durante, digamos, 20 milisegundos después de representar el control Chart, el problema no ocurrirá: habrá tiempo para que las imágenes se escriban en el disco.

contestado el 08 de mayo de 12 a las 20:05

¿Encontraste eso documentado en alguna parte? - campbell

Intenté esto sin suerte, incluso con retrasos de hasta 2500 ms. - usuario804018

¿Cuál sería el proceso para hacer eso (la demora en renderizar la página)? Tengo el mismo problema de vez en cuando. En desarrollo, el gráfico (solo uno aquí) no se muestra 9 de cada 10 veces. En producción, el gráfico SÍ se muestra aproximadamente 7 de cada 10 veces. Es ese 3 de 10 que quiero arreglar.

contestado el 09 de mayo de 12 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.