none
ASP.NETで作成したChartが再描画時に1つ前の処理のものになる RRS feed

  • 質問

  • はじめまして。お世話になります。

    今回初めてASP.NETでWeb画面を作成しておりましたが、Chartの表示がうまくいかずに困っています。

    DBから取得した値を使い、ChartやGridViewを表示させ、「戻る」、「進む」、「最新を表示」等のボタンで表示を更新する画面です。

    この「戻る」ボタン等を押下した時に、GridView等のコントロールは期待通りに動作するのですが、

    chartの表示だけ1処理分遅れてしまいます。

    例えば、

    最初の状態から「戻る」ボタン押下 → Chartの表示が変わらない

    次に「進む」ボタン押下 → 「戻る」ボタンを押下した時の動作

    次に「最新を表示」を押下 → 「進む」ボタンを押下した時の動作

    このような感じです。

    chartとして出力される画像自体が古いのでしょうか?

    処理の問題かとも考えましたが、他のコントロールが問題なく動作するので、Chartがうまく使えていないのかと思い、質問させて頂きました。

    基本的な見落としや、そもそも見当違いの質問でしたら申し訳ありません。

    ご教示頂けますよう、よろしくお願い致します。

    2015年2月19日 10:09

回答

  • SurferOnWww様

    ご返信ありがとうございます。

    結論から申しますと、解決致しました。

    chartの描画処理がを重複して呼んでしまっているところがあり、その部分を修正致しましたところ、期待通りの動きが得られました。

    私はキャッシュが残っている為に画像が更新されていないと思い込んでおりました。

    何か別の見方からアプローチできれば、と思い質問させて頂いた次第です。

    紹介して頂いた記事は拝読させて頂きました。

    Chartの画像の扱い等、知らないことが多々記されており、非常に為になりました。

    今後の開発にも役立てていきたいと思います。

    今回は当方のバグで煩わせてしまい、申し訳ありませんでした。

    ご回答頂き、ありがとうございました。

    • 回答としてマーク Camata 2015年2月20日 7:41
    2015年2月20日 7:41

すべての返信

  • まず最初にご自分の環境を書いていただけませんか?

    環境というのは、サーバーの OS, .NET, IIS, Visual Studio のバージョン、DB とは何か、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザは何か・・・などです。

    次に、

    > ChartやGridViewを表示させ、「戻る」、「進む」、「最新を表示」等のボタンで表示を更新する画面です。

    というのは具体的にどうやっているのか(ボタンって一体何なのですか)、質問者さんが Chart にどのような設定をしているのかを詳しく書いてください。

    一言で Chart と言ってもいろいろな設定(以下のページを見てください)があるのはご存知でしょうか? 

    Chart
    http://surferonwww.info/BlogEngine/post/2010/11/27/Chart.aspx

    2015年2月19日 10:33
  • SurferOnWww様

    ご返信とご指摘ありがとうございます。

    基本的なところが多々抜けていて申し訳ありません。(お恥ずかしながら、質問させて頂くのは初めてなもので...失礼しました)

    環境は、Widows7、.NET Framework 4.5、IIS7.5、VisualStdio Community2013、

    DBはMicrosoft SQL Server2012を使用しています。

    VisualStdioのデバッグで表示した場合も、IISで表示した場合もこの現象が起こります。

    ブラウザはIE11を使用していますが、IE10、FireFox、Chromeで表示した場合も同じ現象が起こります。

    各ボタンについては、

    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="進む" Width="55px" Font-Size="Medium" />

    <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="戻る" Width="55px" Font-Size="Medium" />

    のようにコントロールを利用しております。

    データベースに時間ごとの波形データが入っており、このボタンによって、データを1時間未来、1時間過去に移動させて表示します。

    Chartは棒グラフと折れ線を2つずつ表示しており、設定はデフォルトの状態からあまりいじっていないと思いますが、

    データのセット、最大値のセット、メジャーグリッドの設定はC#側から行っています。

    Chartについて、まだ分かっていない部分が多く、申し訳ありません。記載して頂いたURLは参考にさせて頂きます。

    よろしくお願い致します。

    2015年2月19日 11:22
  • まず、紹介したページを読んで、Chart の基本的なとこを理解していただけますか? 基本的な知識をつけていただいてからでないと話が通じにくいと思いますので。
    • 編集済み SurferOnWww 2015年2月19日 12:51 一部訂正
    2015年2月19日 12:48
  • 先に紹介した記事は読んでいただけたでしょうか? そして、質問者さんの Chart の設定がどのようになっているか説明できるようになったでしょうか?

    原因として疑わしいのは、

    (1) キャッシュされた画像が表示されている。または、

    (2) ボタンクリックの際に正しく抽出条件が渡されてない。

    あたりだと思いますが、その議論をするためにも、現在の設定がどうなっているか分からないと始まりませんので。

    2015年2月20日 7:08
  • SurferOnWww様

    ご返信ありがとうございます。

    結論から申しますと、解決致しました。

    chartの描画処理がを重複して呼んでしまっているところがあり、その部分を修正致しましたところ、期待通りの動きが得られました。

    私はキャッシュが残っている為に画像が更新されていないと思い込んでおりました。

    何か別の見方からアプローチできれば、と思い質問させて頂いた次第です。

    紹介して頂いた記事は拝読させて頂きました。

    Chartの画像の扱い等、知らないことが多々記されており、非常に為になりました。

    今後の開発にも役立てていきたいと思います。

    今回は当方のバグで煩わせてしまい、申し訳ありませんでした。

    ご回答頂き、ありがとうございました。

    • 回答としてマーク Camata 2015年2月20日 7:41
    2015年2月20日 7:41