2012-06-16 55 views
2

嗨我想實現一個使用dotnet highcharts結合highchart.So我有一個柱狀圖+餅圖。 我做了List allSeries = new List()列圖表和列表pieSeries =新List()餅圖。如何通過或更多的系列列表來設置系列

我不知道如何將這兩個系列傳遞給.SetSeries()接受SetSeries(Series series); 或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); 

時,我只有一個系列的工作就像我的樣品中 其工作: .SetSeries(allSeries.Select(S =>新系列{類型= s.Type,名稱= s.Name,數據= s.Data})。ToArray());

我該如何將pieSeries和所有系列都傳遞給.SetSeries?

回答

3

你不需要allSeries和pieSeries。我會擺脫pieSeries。您可以根據需要爲您的allSeries列表分配儘可能多的系列,並且它們可以是任何類型。因此,改變你的pieSeries.Add以下幾點:

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()); 
+0

非常感謝你它是如此簡單 – jonny