Изображение внутри UpdatePanel не работает в Firefox - PullRequest
2 голосов
/ 01 мая 2009

У меня есть изображение, которое автоматически создается внутри Ajax UpdatePanel. Это изображение представляет собой график, который генерируется из серверного кода. Поиск в Google, я понял, что это ошибка 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 ]

4 голосов
/ 13 мая 2009

Также это не очень хорошее решение, установка кеша на 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>
4 голосов
/ 02 мая 2009

Какую версию .NET вы используете? В фреймворке 3.5 появился новый графический элемент управления. Я провел несколько дней, играя с ним, и был удивлен тем, насколько он мощный. И я также использовал его в UpdatePanels без каких-либо проблем.

2 голосов
/ 03 мая 2009

Мне кажется, что вы должны иметь ту же проблему на FF или IE, независимо от этого.

Я заметил на вашей панели обновлений, что у вас есть

UpdateMode="Conditional"

но вы не указываете триггеры. это означает, что содержимое панели обновлений не будет вызываться ничем другим, кроме кнопок внутри панели обновления, которые я не вижу. Попробуйте изменить UpdateMode на Always для отладки, посмотрите, решит ли это вашу проблему, и отработайте соответствующий триггер.

1 голос
/ 01 мая 2009

EDIT:

Можете ли вы контролировать, как графическое имя / имя файла создается и отображается в браузере? Может ли изображение кэшироваться браузером? У меня были проблемы с графической упаковкой в ​​Java / JSP с вызовами AJAX. Мне пришлось добавить GUID к моей переменной строки запроса AJAX url, чтобы исправить проблему с кэшированием.

0 голосов
/ 13 мая 2009

Некоторое копание с FireBug привело меня к обнаружению того, что возвращается точно такой же URL-адрес изображения, выбираю ли я 120 Дит или 30 Дит или мезарет. Похоже, ваш элемент управления диаграммой возвращает тот же URL-адрес изображения, даже если данные за ним меняются. Звучит как ошибка в контроле.

Возможно, вы сможете использовать файл web.config в каталоге WebCharts, чтобы установить кэшируемость изображений, которые будут отправляться оттуда, чтобы они никогда не кэшировались.

...