UpdatePanel内的图像在Firefox中不起作用

时间:2009-04-30 20:35:40

标签: c# asp.net ajax updatepanel webchartcontrol

我有一个在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>

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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>

答案 2 :(得分:2)

在我看来,无论如何,你应该在FF或IE上遇到同样的问题。

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

UpdateMode="Conditional"

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

答案 3 :(得分:1)

编辑:

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

答案 4 :(得分:0)

使用FireBug的一些挖掘让我发现,无论选择120Ditë还是30Ditë或mesataret,都会返回完全相同的图像URL。看起来您的图表控件返回相同的图像URL,即使其后面的数据发生更改也是如此。听起来像是控制中的一个错误。

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