2010-11-22 12 views
0

私たちのチャートを描くためにdotNETCHARTINGを使用していますが、彼らはSeriesCollectionのためにSeriesを受け入れています。これは私が取り組んでいる新しいチャートです。以前のものはすべて、示された値と抽出された値の1対1の関係にあります。今私は12:12の値のリストとして示す値のリストを持っています。私はOne SeriesからTwo Seriesに移行する必要があります

私は現在、実際のデータと過去12ヶ月間の予算を表示していますが、Seriesのデータは2 Seriesです。私はデータをソートし、必要に応じてリストしました。

制限事項:.NET 3.5(VS2008)、dotNETCHARTING。

毎月12枚のSQLを作成し、予算に合わせて12枚のSQLを作成しなければならないと、非常に悲しい解決策になります。私が必要としていないものから、各リストを別々に分ける方法を見つけるとすぐにSeries

各モジュールにはList<ModuleValue>がありますが、私はDictionary<int, List<ModuleValue>>で試してみましたので、各シリーズの値(12か月)に別々のリストを持たせることができました。

私はそれぞれの値のリストに対して、リストの各値をSeriesに追加しました。リストの値がなくなるまで繰り返します。 (ForeachForeach

私の質問は、誰でも私に可能な解決策の指針を教えてもらえますか?以下のグラフは、1つの列が並んでいない場合、同じ時間枠(月)で開始し終了した場合、正しいと言います。たとえば1月の予算と1月の実際の予算を比べると、私はdotNETCHARTINGモジュールについて質問しているわけではありません。私は、この中間に、モジュールにデータをどのように送り込むかを尋ねています。

メインロジックボディ:

 
     protected override void CreateChildControls() 
     { 
      base.CreateChildControls(); 

      //_chart.Type = ChartType.Combo; 
      _chart.DefaultSeries.Type = SeriesType.Line; 

// Up for change - between here 
      IList listSeries = new List(); 
      listSeries.Add(GetSeries(_module)); // This line should be listSeries = GetMultipleSeries(_module); or to that effect. 

      foreach (var series in listSeries) 
      { 
       _chart.SeriesCollection.Add(series); 
      } 
// Up for change - and here 

      // This shows the title above the chart: 
      _chart.Title = _module.Title; 
      // This shows the title below the chart: 
      //_chart.XAxis.Label = new Label(_module.Title); 

      _chart.TitleBox.Line.Color = Charter.BackgroundColor; 

      base.SetAreaStyles(); 
      base.SetLinkUrl(_module.LinkUrl); 
     } 

このロジックは、古いロジックで、あるとして残るべき - 他のすべてのチャートは、それに依存しているため。 参照点として使用できます。このロジックがロックされていると考えてください

これは新しいLogicであり、必要なロジックを反映するように変更する必要があります。これは自由であると考えてください。

 
     protected List GetMultipleSeries(FrontModule module) 
     { 
      List listSeries = new List(); 
      Series series = new Series(module.Title); 

      foreach (var keyPair in module.DictionaryValues) 
      { 
       string sFieldTitle = keyPair.Value.Text; 

       Element element = new Element(sFieldTitle, keyPair.Value.Value); 

       element.Color = Charter.GetColor(keyPair.Value.ColorIndex); 

       series.Elements.Add(element); 

       string sToolTip = string.Format 
        ("{0}: {1:N0}" 
        , keyPair.Value.Tooltip 
        , keyPair.Value.Value); 

       element.ToolTip = sToolTip; 

       if (!string.IsNullOrEmpty(keyPair.Value.LinkUrl)) 
       { 
        element.URL = Page.ResolveUrl(keyPair.Value.LinkUrl); 
       } 

       ChartTooltip += string.Concat(sToolTip, ", "); 

      } 

      listSeries.Add(series); 

      ChartTooltip += "\n"; 

      return listSeries; 
     } 

alt text

これは続編行のデータを一覧表示する、すべきではない方法です。それはそれがすべての必要なデータを持っていることを示しています。

あなたが追加できるものはありがたいです。ありがとうございました。

答えて

1

は、次の2つのSeriesのオブジェクトを必要とする:私は仮定してい

protected List GetMultipleSeries(FrontModule module) 
    { 
     List listSeries = new List(); 
     Series seriesActual = new Series(module.Title); 
     Series seriesBudgetted = new Series(module.Title); 

     foreach (var keyPair in module.DictionaryValues) 
     { 
      string sFieldTitle = keyPair.Value.Text; 

      Element element = new Element(sFieldTitle, keyPair.Value.Value); 

      element.Color = Charter.GetColor(keyPair.Value.ColorIndex); 

      // Is is actual or budgetted 
      if (keyPair.Value.IsActual) 
       seriesActual.Elements.Add(element); 
      else 
       seriesBudgetted.Elements.Add(element); 

      string sToolTip = string.Format 
       ("{0}: {1:N0}" 
       , keyPair.Value.Tooltip 
       , keyPair.Value.Value); 

      element.ToolTip = sToolTip; 

      if (!string.IsNullOrEmpty(keyPair.Value.LinkUrl)) 
      { 
       element.URL = Page.ResolveUrl(keyPair.Value.LinkUrl); 
      } 

      ChartTooltip += string.Concat(sToolTip, ", "); 

     } 

     listSeries.Add(seriesActual); 
     listSeries.Add(seriesBudgetted); 

     ChartTooltip += "\n"; 

     return listSeries; 
    } 

ポイントは実際の、またはif文のためにbudgettedているかどうかをテストのいくつかの方法があります。

+0

オハイオ州には何かがあります。私はそれをテストさせてください。乾杯。 – DoStuffZ

+0

YES ... I LOVE U MAN ..;) – DoStuffZ

+0

@DoStuffZ:私は助けてくれると嬉しいです。 –

関連する問題