2

こんにちは私はdotnethighchartsを使用して結合されたhighchartを実装しようとしています。それで私は縦棒グラフ+円グラフを持っています。縦棒グラフの場合はListallSeries= new List()を作成し、円グラフの場合はList pieSeries = new List()を作成しました。

この2つのシリーズをSetSeries(Seriesシリーズ)を受け入れる.SetSeries()に渡す方法がわかりません。またはSetSeries(Series [] seriesArray);

      public ActionResult Profit()
    {
        DBContext.Current.Open();
        List<RoomType> result = new List<RoomType>();
        result = RoomType.Selectcount();
        List<Series> allSeries = new List<Series>();
        List<Series> pieSeries = new List<Series>();
        List<DotNet.Highcharts.Options.Point> puncte = new List<DotNet.Highcharts.Options.Point>();
        string[] categories = new[] { "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" };
        object[] pointnum = new object[12];
        foreach (var j in result)
        {

            for (int i = 0; i < pointnum.Length; i++)
            {
                pointnum[i] = Roomtypereservations.RoomTypeByDate(j.RoomType_ID, i + 1).FirstOrDefault().NumRezervari;
            }
            allSeries.Add(new Series
            {
                Type=ChartTypes.Column,
                Name = j.Room_Type,
                //Data = new Data(myData)
                Data = new Data(pointnum.ToArray())

            });
            pieSeries.Add(new Series
            {
                Type = ChartTypes.Pie,
                Name = "Total rooms",
                Data = new Data(puncte.ToArray())
            });
            puncte.Add(new DotNet.Highcharts.Options.Point
            {

                Name = j.Room_Type,
                Y=13
                //Data = new Data(myData)


            }); 
        }

        Highcharts chart = new Highcharts("chart")
            .SetTitle(new Title { Text = "Combination chart" })
            .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; }" })
            .SetXAxis(new XAxis { Categories =categories} )
            .SetTooltip(new Tooltip { Formatter = "TooltipFormatter" })
            .AddJavascripFunction("TooltipFormatter",
                                  @"var s;
                if (this.point.name) { // the pie chart
                   s = ''+
                      this.point.name +': '+ this.y +' fruits';
                } else {
                   s = ''+
                      this.x  +': '+ this.y;
                }
                return s;")
            .SetLabels(new Labels
            {
                Items = new[]
                                   {
                                       new LabelsItems
                                       {
                                           Html = "Total fruit consumption",
                                           Style = "left: '40px', top: '8px', color: 'black'"
                                       }
                                   }
            })
            .SetPlotOptions(new PlotOptions
            {
                Pie = new PlotOptionsPie
                {
                    Center = new[] { "100", "80" },
                    Size = "100",
                    ShowInLegend = false,
                    DataLabels = new PlotOptionsPieDataLabels { Enabled = false }
                }
            })
            .SetSeries(allSeries.Select(s => new Series { Type = s.Type, Name = s.Name, Data = s.Data }).ToArray());


        return View(chart);

サンプルのように1つのシリーズのみを使用している場合、その動作は次のようになります。.SetSeries(allSeries.Select(s => new Series {Type = s.Type、Name = s.Name、Data = s.Data})。ToArray( ));

pieSeriesとすべてのSeriesの両方を.SetSeriesにパスするにはどうすればよいですか?

4

1 に答える 1

3

allSeriesとpieSeriesの両方は必要ありません。私はpieSeriesを取り除くでしょう。allSeriesリストには、必要な数のシリーズを割り当てることができ、それらは任意のタイプにすることができます。したがって、pieSeriesを変更します。以下に追加します。

allSeries.Add(new Series
{
   Type = ChartTypes.Pie,
   Name = "Total rooms",
   Data = new Data(puncte.ToArray())
})

次に、次のステートメントが機能し、チャートに必要なすべてのシリーズが機能します。

.SetSeries(allSeries.Select(s => new Series { Type = s.Type, Name = s.Name, Data = s.Data }).ToArray());
于 2012-06-16T21:38:23.353 に答える