質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • C#

    6270questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • ASP.NET

    466questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

  • Visual Studio 2010

    118questions

    Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

C#で.aspxにてグラフをかきたいです

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 478

pro-poke5

score 29

こんにちわ

現在VisualStudio2010にて
C#と.aspxで折れ線グラフを描写しようとしています
チャートコントロールを使いたく
サンプルなどみてかいたのですがうまくできません

データはバインドしていれます

間違いやアドバスをご指摘願いませんでしょうか
よろしくお願いいたします。

         private void Chart(object sender, EventArgs e)
        {
                DataSet ds = new DataSet();

                 Series char1 = Chart1.Series.Add("name");

                char1.LegendText = "ああ";
                char1.ChartArea = "SumChartArea";

                Chart1.Series.Clear();//初期化
                Chart1.ChartAreas.Clear();

                char1.AxisLabel = "グラフ";

               char1.XValueMember = "Xdate";
               char1.YValueMembers = "Ydate";

               this.Chart1.DataSource = this.ds;
               Chart1.DataBind();              

           }

aspxファイルがこちら↓

    <asp:Chart ID="Chart1" runat="server"  
        onload="Chart1_Load"  EnableViewState="false">
        <Series>
            <asp:Series Name="Series1" ChartType="Line">
            </asp:Series>
        </Series>
        <ChartAreas>
            <asp:ChartArea Name="ChartArea1">
            </asp:ChartArea>
        </ChartAreas>
    </asp:Chart>

よろしくおねがいします。

追記
コードの以下のように修正いたしました。

         private void Chart(object sender, EventArgs e)
        {
            Chart1.Series.Clear();//初期化

           Chart1.Series["series1"].Points.AddXY(1, 55);
            Chart1.Series["series1"].Points.AddXY(2, 72);
            Chart1.Series["series1"].Points.AddXY(3, 80);
            Chart1.Series["series1"].Points.AddXY(4, 49);

            Chart1.Series.Add("series1"); 
    }

追記2
試行錯誤し無事に解決いたしました。
原因としてデータソースがうまくセットできていなかったことや、小さなスペルミス等でした。
無事動いたソースは以下になります。

アドバイス等ありがとうございました。

                        DataSet ds = new DataSet();
             Chart chart = new Chart();
                        chart.Series.Clear();
                        chart = new Chart();

                        Series series = new Series();
                        series.ChartType = SeriesChartType.Line; //グラフ

                        series.XValueMember = "Xdata";
                        series.YValueMembers = "Ydata";
                        chart.Series.Add(series);
                        ChartArea area = new ChartArea();
                        chart.Titles.Add("あああ");

                        chart.ChartAreas.Add(area);
                        chart.DataSource = ds;

                        Chart1.Controls.Add(chart);
                        Chart1.DataBind();
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

Chart のサンプルは持っているでしょうか?

持っているなら以下はスルーしてください。

持っていなければ MSDN のサイトからサンプルを入手できるので、ダウンロードして動くように設定することをお勧めします。話はそれからにした方がよさそうです。

解説が英語であるのを厭わなければこのサンプルは今後の開発に非常に有益なものになると思います。

このスレッドの質問者さんの問題がサンプルを見ると解決するかどうかは分かりませんが、解決のためのヒントはあるかもしれません。

解決できなくとも、今後の開発に役立つはずですので、ダウンロードして設定する手間をかけても損はないと思います。

サンプルの入手先や設定手順は以下の記事にありますので、興味があれば見てください。

Chart Samples
http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/14 11:34

    アドバイスありがとうございます
    サンプルはダウンロードし参考にしているのですが
    初心者故有効に活用できておらずすみません…

    キャンセル

  • 2017/12/14 15:56

    サンプルは質問者さんの環境で動いているんですか? 

    完全な ASP.NET Web Forms アプリの Web サイトプロジェクトとしてサンプルが含まれているので、それを適当なフォルダに解凍して Visual Studio(.NET4 なので 2010 以降のバージョン)で開いて実行すれば何も手を加えることなく動くはずです。

    それすら動かないということですと、どこか質問者さんの環境に問題がありそうな気がします。

    キャンセル

  • 2017/12/15 11:29

    ありがとうございます
    サンプルは動いております

    現在コードを修正し、実行するとエラーはでないのですがグラフが表示されません
    枠自体は存在し空の状態のようなイメージになります…

    キャンセル

  • 2017/12/15 13:12

    > サンプルは動いております

    では、サンプルを実行して、ブラウザに表示された画面の左ウィンドウの Content タブで Chart Types > Line Charts を開いて、サンプルを見ることができるのですよね?

    その中に質問者さんが望む形に近いものはありませんか? 全く望むものと違っていて、それらは役に立たないですか?

    > 現在コードを修正し、実行するとエラーはでないのですがグラフが表示されません

    「修正」って一体何をしたのですか? 具体的に書いてくれないと誰もあなたのやったことは分かりません。分からないので何のアドバイスもできません。

    キャンセル

  • 2017/12/15 13:36

    誰マイナス評価をした人は? 理由を書かないでそういうことをするのは卑怯ですよ。

    キャンセル

0

うーん、char1が使われていないようですが……。
これでどうでしょうか?

                //Series char1 = new Series();
                Series char1 = Chart1.Series.Add("name");

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/14 10:51

    ありがとうございます
    Seriesにエラーがでて型、または名前空間名Seriesが見つかりませんでしたとでるのですが
    何が足りないのでしょうか…
    初歩的な質問ですみません

    キャンセル

  • 2017/12/14 11:05

    usingはどう書いてますか?
    System.Web.UI.DataVisualization.Charting でしょうか?

    キャンセル

  • 2017/12/14 11:15

    ありがとうございます
    そちら抜けていました
    あと度々すみません
    このChart1にエラーが出るのですが、
    aspxファイルでIDとしてChart1使用してるのですが
    csファイルでも何か定義?とかする必要があるのでしょうか?

    キャンセル

  • 2017/12/14 11:33

    エラー内容が分からないと何とも。
    こういうところを参考に、まず出せるようにしてみてはどうでしょう?
    https://www.ipentec.com/document/document.aspx?page=csharp-asp-net-change-chart-control-type

    キャンセル

  • 2017/12/14 11:52

    ありがとうございます
    何度も申し訳ありませんでした
    エラー内容は
    名前”Chart1”は現在のコンテキスト内に存在しません
    とでてきます

    こちらのサイト参考にさせていただきます。

    キャンセル

  • 2017/12/15 11:25

    エラーはaspxファイルの方でChartコントロールの場所がItemTemplateのなかにあることで出ていたようでした

    キャンセル

  • 2017/12/15 13:04

    ここに書いてあること以外は知る由もない第三者には、そういう質問に書いてないところで出ている問題であるということは知る由もないです。回答が必要ならきちんと情報提供してください。

    で、Chart を単独でページに配置したら(他のコントロールの中に入れるのは止めて、Page 上に直接 Chart をツールボックスからドラッグ&ドロップしたら)動くようになるのですか?

    キャンセル

  • 2017/12/15 16:33

    すみません、本当にまだ始めたばかりの初心者でそこが原因だと考えず情報を提供していませんでした
    以後気を付けます

    単独で配置したら動きます

    キャンセル

  • 2017/12/15 17:04

    > 単独で配置したら動きます

    ということは Chart を GridView とか DetailsView などの ItemTemplate に配置した結果、コードビハインドの C# のコードで Series char1 = Chart1.Series.Add("name"); としても Chart1 が認識されなかったことが原因ですよね?

    Chart に限らず(Button でもなんでも)、ItemTemplate にコントロールを配置した場合、そのコントロールは動的に生成されるので、Series char1 = Chart1.Series.Add("name"); というような形で静的に取得することはできません。

    今回のケースでどうすればいいかのアドバイスが必要でしたら、質問者さんのやりたいことの全体のストーリー・シナリオをかいて、それを実現するのにどういうコードを書いたか、部分的ではなく全体が分かる情報を出してください。

    キャンセル

  • 2017/12/19 17:28

    追記に説明を付け加えました。

    ただのサンプルデータを表示することだけはできるようになりました。
    可変式になるようもう少し調べて頑張りたいと思います。

    キャンセル

  • 2017/12/19 18:19

    先の問題、

    > エラーはaspxファイルの方でChartコントロールの場所がItemTemplateのなかにあることで出ていたようでした

    は解決したのですか? 順序だてて、あなたが何をしたのかをきちんと書かないと・・・

    キャンセル

  • 2017/12/20 09:19

    すみません、そちらは解決いたしました。
    そもそもサンプルでさえも表示できなかったことが問題であり、それがItemTemplateのなかにあったことが原因でした
    そちらはaspxファイルのなかになるチャートコントロールの位置を変えることで解決しました
    そして最終的なゴールであるデータをバインドさせてグラフを表示させるのがわからずという状態です

    キャンセル

  • 2017/12/20 09:39

    先のコメントにあった「単独で配置したら動きます」と言う状態とどう違うのですか? その時は動いたんじゃなかったのですか?

    キャンセル

  • 2017/12/20 10:17 編集

    サンプルを配置した時は適当な場所に配置してたまたま動いていたようで、
    自分で配置させたときは別の場所に配置させ場所が悪かったので表示されなかったのだと思います
    このasxpxファイルは今載せているコードのほかにヘッダーやフッターやほかの部分もあります
    今回データを表示させたいという質問なのでchartを配置している前後の関係のない部分はのせていませんでした
    ややこしくてすみません

    キャンセル

  • 2017/12/20 11:47

    提供される情報では状況が正確には把握できません。なんとなく想像はできますが、想像をベースに回答して想像が間違っていていると混乱を招くばかりですので、具体的に全体の状況が見えるものをベースに話をしませんか?

    例えば、

    (1) 質問者さんの問題を再現できる必要最低限(「ヘッダーやフッターやほかの部分」など余計なものは削除)の完全なサンプルコードを掲示する。

    それがダメなら、

    (2) Chart サンプルから質問者さんの目的に合うものを選び、そのソースコードをベースにする。

    上記提案に乗れる場合は私の回答のコメントにその旨書いてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    6270questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • ASP.NET

    466questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

  • Visual Studio 2010

    118questions

    Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。