Вопрос

У меня есть изображение, которое автоматически генерируется внутри Ajax UpdatePanel.Это изображение представляет собой график, созданный на основе серверного кода.Поискав в Гугле, я понял, что это баг ФФ.Есть ли у кого-нибудь решение?

Вот исходник (там же есть ненужные теги, я просто скопировал-вставил)

<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>
Это было полезно?

Решение 2

Кроме того, это не очень хорошее решение: установка кэширования на 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>

Другие советы

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

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

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

UpdateMode="Conditional"

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

РЕДАКТИРОВАТЬ:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top