Domanda

Ho un'immagine che viene generata automaticamente all'interno di Ajax UpdatePanel. Questa immagine è un grafico generato dal codice lato server. Cercando su Google, mi sono reso conto che si trattava di un bug di FF. Qualcuno ha qualche soluzione?

Ecco la fonte (contiene anche tag non necessari, ho appena copiato e incollato)

<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>
È stato utile?

Soluzione 2

Inoltre non è una buona soluzione, impostare la cache su nocache ha risolto il mio problema. Lo dico sul mio pageload

  Response.Cache.SetCacheability(HttpCacheability.NoCache);

Funziona anche impostando questo codice

<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>

Altri suggerimenti

Quale versione di .NET stai usando? Il framework 3.5 ha un nuovo controllo grafico. Ho trascorso alcuni giorni a giocarci e sono rimasto sorpreso da quanto sia potente. E l'ho usato anche in UpdatePanels senza alcun problema.

Mi sembra che dovresti avere lo stesso problema su FF o IE, indipendentemente.

Ho notato sul tuo pannello di aggiornamento che hai

UpdateMode="Conditional"

ma non specifichi alcun trigger. ciò significa che il contenuto del pannello di aggiornamento non verrà attivato da nient'altro che da qualsiasi pulsante all'interno del pannello di aggiornamento che non vedo. Prova a modificare UpdateMode in Always per il debug e verifica se il problema è stato risolto, quindi trova il trigger appropriato da lì.

EDIT:

Puoi controllare come il nome grafico / nome del file viene creato e renderizzato nel browser? L'immagine potrebbe essere memorizzata nella cache dal browser? Ho avuto problemi con un pacchetto grafico in Java / JSP con chiamate AJAX. Ho dovuto aggiungere un GUID alla mia variabile della stringa di query dell'URL AJAX per risolvere il problema di memorizzazione nella cache.

Alcuni scavi con FireBug mi hanno portato a scoprire che viene restituito esattamente lo stesso URL di immagine se seleziono 120 Dit & # 235; o 30 Dit & # 235; o mesataret. Sembra che il tuo controllo grafico stia restituendo lo stesso URL immagine, anche quando i dati dietro di esso cambiano. Mi sembra un bug nel controllo.

Potresti essere in grado di utilizzare un web.config nella directory WebCharts per impostare la cache delle immagini servite da lì, in modo che non vengano mai memorizzate nella cache.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top