FlexGridのデータをC1Chartに連携してみる
FlexGridとC1Chartのデータ連携は、先ほど作成したSalesDataListクラスにて行います。メイン画面のFlexGridに表示されているデータから、SalesDataクラスを生成し、配列としてSalesDataListクラスを生成します。
データクラスの受け渡しには、プロパティを利用します。今回追加したFormクラスにプロパティを追加します。
public SalesDataList SalesDataList
{
get { return this._salesDataList; }
set { this._salesDataList = value; }
}
プロパティでセットされた値をBindingSourceのデータソースとして設定することで、グラフの表示を行うことができます。
this.bindingSource1.DataSource = "データの配列";
表示するデータを変更する
ここで、一工夫してみましょう。先ほどまでの場合は、FlexGridから渡されたすべてのデータがグラフに表示されている状態になっていました。
そこで、カテゴリを選択し表示するデータを絞り込むようにします。データの表示は先ほどと同様に、BindingSourceのデータソースを設定するだけになります。設定するデータソースは、表示させたいものになるように加工しておきます。
public SalesDataList SelectCategory(string code)
{
SalesDataList value = new SalesDataList();
List<SalesData> list = this.FindAll(delegate(SalesData data)
{
return (data.CategoryCode == code);
});
value.AddRange(list);
return value;
}
データクラスには、カテゴリを指定して絞り込みが行えるメソッドを追加します。
this.bindingSource1.DataSource = this._salesDataList.SelectCategory("指定するカテゴリコード");
どうでしょうか? カテゴリごとのデータが表示されたかと思います。
表示されているグラフの種類を変更してみる
C1Chartコントロールには、たくさんの種類のグラフが用意されています。ここでは、複数用意されている種類の中から、折れ線グラフと棒グラフを表示してみましょう。
画面のRibbonTabにComboBoxを追加し、グラフの種類を選択できるようにします。ここで折れ線グラフ、棒グラフを切り替えられるようにします。
グラフの種類を指定するにはChartTypeプロパティを指定します。設定値はChart2DTypeEnum列挙体で指定を行い、折れ線グラフの場合はChart2DTypeEnum.XYPlotを、棒グラフの場合はChart2DTypeEnum.Barを設定します。
棒グラフを選択したのが下の画像です。
プロパティの設定だけで、再描画まで実行されることが確認できると思います。




