Question

J'ai une image générée automatiquement dans un Ajax UpdatePanel. Cette image est un graphique généré à partir du code côté serveur. En cherchant sur Google, j'ai compris qu'il s'agissait d'un bug de FF. Quelqu'un a-t-il une solution?

Voici la source (elle contient aussi des balises inutiles, je viens de copier-coller)

<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>
Était-ce utile?

La solution 2

De plus, ce n’est pas une bonne solution. Régler la capacité de mise en cache sur nocache a résolu mon problème. Je worte ceci sur mon pageload

  Response.Cache.SetCacheability(HttpCacheability.NoCache);

Cela fonctionne également en définissant ce code

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

Autres conseils

Quelle version de .NET utilisez-vous? Le framework 3.5 a un nouveau contrôle graphique. J'ai passé quelques jours à jouer avec, et j'ai été surpris de voir à quel point c'est puissant. Et je l’ai aussi utilisé dans UpdatePanels sans aucun problème.

Il me semble que vous devriez avoir le même problème sous FF ou IE, peu importe.

J'ai remarqué sur votre panneau de mise à jour que vous avez

UpdateMode="Conditional"

mais vous ne spécifiez aucun déclencheur. ce que cela signifie, c'est que le contenu du panneau de mise à jour ne sera déclenché par rien d'autre que par les boutons du panneau de mise à jour que je ne vois pas. Essayez de changer UpdateMode en Always pour le débogage et voyez si cela résout votre problème, puis déterminez le déclencheur approprié à partir de là.

EDIT:

Pouvez-vous contrôler la manière dont le nom graphique / le nom de fichier est créé et rendu au navigateur? L'image peut-elle être mise en cache par le navigateur? J'ai eu des problèmes avec un emballage graphique en Java / JSP avec des appels AJAX. J'ai dû ajouter un GUID à ma variable de chaîne de requête URL AJAX pour résoudre le problème de mise en cache.

Certaines recherches avec FireBug m'ont amené à découvrir que la même URL d'image était renvoyée que je sélectionne 120 Dit & # 235; ou 30 Dit & # 235; ou mesataret. On dirait que votre contrôle de graphique renvoie la même URL d'image, même lorsque les données qui le composent changent. Cela me semble être un bug dans le contrôle.

Vous pourrez peut-être utiliser un fichier web.config dans le répertoire WebCharts pour définir la mise en cache des images servies à partir de cet emplacement, afin qu'elles ne soient jamais mises en cache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top