2012-02-10 3 views
3

мне нужно заполнить пирог с данными, которые являются результатом запроса (LINQ To SQL)Dotnet Highcharts, Заполняет пирог с результатом запроса

Проблема в том, что я не могу управлять, чтобы добавить Еогеасп внутри этот код, чтобы вставить свои данные вместо статического Firefox, Chrome, IE ЭСТ ...

 protected void Page_Load(object sender, EventArgs e) 
     { 
      //RepeaterVersionsForPie.DataSource = DAaccess.LibDataVersion.LibDataVersion.GetNumberOfCompaniesUsingEachVersions(); 
      //RepeaterVersionsForPie.DataBind(); 

      var test = DAaccess.LibDataVersion.LibDataVersion.GetNumberOfCompaniesUsingEachVersions(); 

      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 +' %'; }" 
     }, 
     Point = new PlotOptionsPiePoint 
     { 
      Events = new PlotOptionsPiePointEvents 
      { 
       Click = "function() { alert (this.category +': '+ this.y); }" 

      } 
     } 

    } 
}) 
.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 } 
              }) 
}); 
      ltrChart.Text = chart.ToHtmlString(); 







     } 

на самом деле, мне нужно, чтобы иметь возможность вставить что-то вроде этого:

foreach (var item in test) 
{ 
new object[] { item.name, item.count} 
} 

Но VS Безразлично» t позвольте мне преуспеть h вещь Заранее благодарим за помощь ...

ответ

3

Вы можете создать метод расширения для любого типа DAaccess.LibDataVersion.LibDataVersion.GetNumberOfCompaniesUsingEachVersions() и вернуть результаты в формате Pie-shaped Series.

public static class DotNetHighChartsExtensions 
{ 
    public static object[] ToPieChartSeries(this WhateverThatTypeIs data) 
    { 
     var returnObject = new List<object>(); 

     foreach (var item in data) 
     { 
      returnObject.Add(new object[] { item.name, item.count}); 
     } 

     return returnObject.ToArray(); 
    } 
} 

Затем в коде, где вы имеете статический код, вы бы просто заменить его:

Data = new Data(test.ToPieChartSeries()) 

В качестве альтернативы, вы можете иметь метод ToPieChartSeries вернуть Data объект, который разыскивается за по объекту Series.

Хотя я не работал с этим проектом DotNet.HighCharts, я работал с собственными объектами HighCharts для нескольких проектов MVC и создал их. На первый взгляд, похоже, что это в конечном итоге делает то же самое, что и я. Создайте объект .NET, который может быть сериализован как JSON и распознан библиотекой JavaScript HighCharts.

+0

Эй, ваше решение привело меня к решению моей проблемы. Мне пришлось немного изменить его, и я получил его работу. Спасибо за помощь. Я бы дал вам щедрость, но я задал ему вопрос кого-то elses. Надеюсь, это работает для них, и они отмечают это как принятое. – Linger

+0

Теперь я вижу, как наградить щедрость, но я должен ждать 24 часа. – Linger

+1

См. Мой ответ здесь http://stackoverflow.com/questions/10074620/pass-a-list-of-series-to-setseries/10096108#10096108. Как я уже отмечал, я не знаком с проектом DotNet.HighCharts, но, основываясь на комментариях Linger, методу, возможно, потребуется возвращать в качестве массива Series вместо массива объекта. –

2
SetSeries(new Series { 
       Type = ChartTypes.Pie, 
       Data = new Data(test.Select(d => new { Name = d.name, Y = d.count }).ToArray()) 
      }) 
+0

Это помогло мне. – JBntis

Смежные вопросы