2012-08-23 20 views
5

estoy tratando un método para enlazar datos a la gráfica circularCómo usar dotnet highcharts dll para mostrar HighCharts en MVC3?

Public ActionResult Charts 
    { 
     Highcharts chart = new Highcharts("chart") 
     .InitChart(new Chart { PlotShadow = false }) 
     .SetTitle(new Title { Text = "Browser market shares at a specific website, 2010" }) 
     .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; }" }) 
     .SetPlotOptions(new PlotOptions 
     { 
      Pie = new PlotOptionsPie 
      { 
       AllowPointSelect = true, 
       Cursor = Cursors.Pointer, 
       DataLabels = new PlotOptionsPieDataLabels 
       { 
        Color = ColorTranslator.FromHtml("#000000"), 
        ConnectorColor = ColorTranslator.FromHtml("#000000"), 
        Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; }" 
       } 
      } 
     }) 
     .SetSeries(new Series 
     { 
      Type = ChartTypes.Pie, 
      Name = "Browser share", 
      Data = new Data(new object[] 
            { 
             new object[] { "Firefox", 45.0 }, 
             new object[] { "IE", 26.8 }, 
             new DotNet.Highcharts.Options.Point 
             { 
              Name = "Chrome", 
              Y = 12.8, 
              Sliced = true, 
              Selected = true 
             }, 
             new object[] { "Safari", 8.5 }, 
             new object[] { "Opera", 6.2 }, 
             new object[] { "Others", 0.7 } 
            }) 
          }); 
     } 
    } 

    public JsonResult GetData() 
    { 
     int Param1; 
     Param1 = 1;  
     var reports = db.ExecuteStoreQuery<ResourceReports>("ResourceReports @EmployeeID", new SqlParameter("@EmployeeID", Param1)).ToList(); 
     return Json(reports, JsonRequestBehavior.AllowGet); 
    } 

quiero reemplazar

.SetSeries(new Series 
    { 
     Type = ChartTypes.Pie, 
     Name = "Browser share", 
     Data = new Data(new object[] 
            { 
             new object[] { "Firefox", 45.0 }, 
             new object[] { "IE", 26.8 }, 
             new DotNet.Highcharts.Options.Point 
             { 
              Name = "Chrome", 
              Y = 12.8, 
              Sliced = true, 
              Selected = true 
             }, 
             new object[] { "Safari", 8.5 }, 
             new object[] { "Opera", 6.2 }, 
             new object[] { "Others", 0.7 } 
            }) 
     }); 
    } 

con mi GetData() cómo puedo hacer esto, los datos de .SetSeries debe ser mi datos devueltos en GetData method

Respuesta

2

Parece que está utilizando Dotnet.Highcharts. Puede crear una lista de Series y una lista de Point.

List<Series> mySeries = new List<Series>(); 
List<Point> myPoints = new List<Point>(); 

lo haría bucle a través de cada serie que necesita para crear y generar los datos de puntos de este modo:

myPoints.Add(new Point { 
    X = (detailRec.RecordTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds, 
    Y = detailRec.TotalCount 
}); 

entonces se podría crear la propia serie utilizando la lista de puntos para sus datos de este modo:

mySeries.Add(new Series{ 
    Name = distinctDistrict.Name, 
    Data = new Data(myPoints.ToArray()) 
}); 

continuación para configurar la serie se puede utilizar la siguiente declaración:

.SetSeries(mySeries.Select(s => new Series { 
    Name = s.Name, 
    Data = s.Data 
}).ToArray()) 

Si utiliza el buscador de objetos en Visual Studio, puede ver las otras propiedades y métodos de la clase Series y Point. Para utilizar el código anterior, tendrá que incluir las siguientes instrucciones using:

using DotNet.Highcharts; 
using DotNet.Highcharts.Enums; 
using DotNet.Highcharts.Helpers; 
using DotNet.Highcharts.Options; 
using Point = DotNet.Highcharts.Options.Point; 
+0

@Tommmy Johnson ..... Mi pregunta era .SetSeries deben ser mis datos devueltos en el método GetData – SoftwareNerd

+3

no se puede devolver un ' SetSeries' ya que es un método para establecer la serie. Sin embargo, puede devolver un objeto 'Serie'. En el ejemplo anterior, devolvería 'mySeries'. Luego use eso en el método 'SetSeries' para agregar su serie al gráfico. –