Pregunta

Tengo una imagen que se genera automáticamente dentro de un Ajax UpdatePanel. Esta imagen es un gráfico que se genera a partir del código del lado del servidor. Al buscar en Google, me di cuenta de que era un error de FF. ¿Alguien tiene alguna solución?

Aquí está la fuente (también contiene etiquetas innecesarias, acabo de copiar y pegar)

<div>
   <asp:UpdatePanel ID="UpdatePanelGraph" runat="server" UpdateMode="Conditional">
       <ContentTemplate>
           <asp:Panel ID="pnlGraph" runat="server" CssClass="container">
                <div id="chart">
                     <Web:ChartControl ID="chartExchange" runat="server" Width="300px" Height="200px" BorderStyle="None" GridLines="both" DefaultImageUrl="../images/noData.png" ShowTitlesOnBackground="False" BorderWidth="1px" Padding="1" HasChartLegend="False" BottomChartPadding="20" TopChartPadding="5" RightChartPadding="5" LeftChartPadding="20">
                            <Border Color="211, 224, 242"></Border>
                            <YAxisFont ForeColor="115, 138, 156" Font="Tahoma, 7pt" StringFormat="Far,Center,Character,LineLimit"></YAxisFont>
                            <XTitle ForeColor="115, 138, 156" StringFormat="Center,Near,Character,LineLimit">
                            </XTitle>
                            <XAxisFont ForeColor="115, 138, 156" StringFormat="Near,Near,Character,NoClip"></XAxisFont>
                            <Background Type="LinearGradient" Color="#C9DEFD" ForeColor="Transparent" EndPoint="500, 500">
                            </Background>
                            <ChartTitle ForeColor="51, 51, 51" Font="Verdana, 9pt, style=Bold" StringFormat="Near,Near,Character,LineLimit">
                            </ChartTitle>
                            <Charts>
                                <Web:SmoothLineChart Name="buy" Legend="Blen">
                                    <Line Color="ActiveCaption"></Line>
                                    <DataLabels>
                                        <Border Color="Transparent"></Border>
                                        <Background Color="Transparent"></Background>
                                    </DataLabels>
                                </Web:SmoothLineChart>
                                <Web:ColumnChart Name="avgChart">
                                </Web:ColumnChart>
                            </Charts>
                            <YTitle ForeColor="115, 138, 156" StringFormat="Center,Near,Word,LineLimit"></YTitle>
                    </Web:ChartControl>
                </div>                
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
¿Fue útil?

Solución 2

Además, no es una buena solución, establecer la capacidad de almacenamiento en caché en nocache resolvió mi problema. Lo agradezco en mi carga de página

  Response.Cache.SetCacheability(HttpCacheability.NoCache);

También funciona configurando este código

<script type="text/javascript">

      var prm = Sys.WebForms.PageRequestManager.getInstance();
      prm.add_pageLoaded(pageLoaded);
      var c = 0;
      function pageLoaded(sender, args)
      {
      var img = document.getElementById("ctl00_ctl00_MainContent_MainContent_chartExchange");
      c++;
      img.src = img.src + "?" + c;
      }

</script>

Otros consejos

¿Qué versión de .NET estás usando? El marco 3.5 tiene un nuevo control gráfico. Pasé unos días jugando con él y me sorprendió lo poderoso que es. Y también lo usé en UpdatePanels sin ningún problema.

Me parece que debería tener el mismo problema en FF o IE, independientemente.

He notado en tu panel de actualización que tienes

UpdateMode="Conditional"

pero no especifica ningún desencadenante. lo que eso significa es que el contenido del panel de actualización no se activará por otra cosa que no sea ningún botón dentro del panel de actualización que no veo. Intente cambiar el Modo de actualización a Siempre para la depuración y vea si eso soluciona su problema, y ??encuentre el desencadenante apropiado desde allí.

EDITAR:

¿Puede controlar cómo se crea y se representa el nombre gráfico / nombre de archivo en el navegador? ¿Podría la imagen ser almacenada en caché por el navegador? Tuve problemas con un paquete de gráficos en Java / JSP con llamadas AJAX. Tuve que agregar un GUID a mi variable de cadena de consulta de URL AJAX para solucionar el problema de almacenamiento en caché.

Algunas excavaciones con FireBug me llevaron a descubrir que se devuelve exactamente la misma URL de imagen si selecciono 120 Dit & # 235; o 30 Dit & # 235; o mesataret. Parece que su control de gráficos está devolviendo la misma URL de imagen, incluso cuando los datos detrás de él cambian. A mí me parece un error en el control.

Es posible que pueda usar un archivo web.config en el directorio WebCharts para configurar la capacidad de almacenamiento en caché de las imágenes que se sirven desde allí, para que nunca se almacenen en caché.

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