2

我有一个在 Ajax UpdatePanel 内自动生成的图像。此图像是从服务器端代码生成的图形。在谷歌搜索,我意识到这是一个 FF 的错误。有没有人有任何解决方案?

这是源代码(它还包含不需要的标签,我只是复制粘贴)

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

5 回答 5

4

您使用的是哪个版本的 .NET?3.5 框架有一个新的图形控件。我花了几天时间玩它,对它的强大感到惊讶。而且我还在 UpdatePanels 中使用它,没有任何问题。

于 2009-05-01T23:30:21.517 回答
4

这也不是一个好的解决方案,将可缓存性设置为 nocache 解决了我的问题。我在我的页面加载中写了这个

  Response.Cache.SetCacheability(HttpCacheability.NoCache);

它也可以通过设置此代码来工作

<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>
于 2009-05-13T15:41:05.367 回答
2

在我看来,无论如何,您在 FF 或 IE 上都应该有同样的问题。

我在你的更新面板上注意到你有

UpdateMode="Conditional"

但您没有指定任何触发器。这意味着更新面板的内容不会被我看不到的更新面板内的任何按钮以外的任何其他东西触发。尝试将 UpdateMode 更改为 Always 以进行调试,看看是否能解决您的问题,并从那里找出适当的触发器。

于 2009-05-03T06:18:12.743 回答
1

编辑:

你能控制图形名称/文件名如何被创建并呈现给浏览器吗?图片可以被浏览器缓存吗?我在使用 AJAX 调用的 Java/JSP 中进行图形打包时遇到问题。我必须将 GUID 附加到我的 AJAX url 查询字符串变量以修复缓存问题。

于 2009-04-30T22:34:03.203 回答
0

使用FireBug进行一些挖掘后,我发现无论我选择 120 Ditë 或 30 Ditë 还是 mesataret,都会返回完全相同的图像 URL。看起来您的图表控件正在返回相同的图像 URL,即使它背后的数据发生变化也是如此。对我来说听起来像是控件中的错误。

您可以使用 WebCharts 目录中的 web.config 来设置从那里提供的图像的可缓存性,以使它们永远不会被缓存。

于 2009-05-13T16:00:45.413 回答