2015-05-26 4 views
1

Я пытаюсь использовать круговую диаграмму для отображения статистики. Данные в моей таблице, и я получаю это так:Bind Kendo круговая диаграмма с источником данных

public class StatisticsAccess 
{ 
    public static object getTypesForStatistics() 
    { 
     var dbo = new UsersContext(); 
     var all = (from a in dbo.Note 
         select a).ToList(); 
     var results = all.GroupBy(item => item.language.lang) 
         .Select(g => new 
         { 
          language = g.Key, 
          Count = g.Count() 
         }); 
     return (results.ToList()); 

    } 
} 

Контроллер:

public class StatisticsController : Controller 
{ 
    // 
    // GET: /Statistics/ 

    public ActionResult Index() 
    { 
     return View();  
    } 

    public void displayChart() 
    { 
     var results = Json(DAL.StatisticsAccess.getTypesForStatistics()); 
    } 

} 

Вид:

@(Html.Kendo().Chart() 
    .Name("chart") 
      .Title(title => title 
       .Text("Share of Internet Population Growth, 2007 - 2012") 
       .Position(ChartTitlePosition.Bottom)) 
    .Legend(legend => legend 
     .Visible(false) 
    ) 
     .Series(series => 
      { 
       series.Column("Count").CategoryField("language"); 
      }) 


      .DataSource(ds => ds.Read(read => read.Action("displayChart", "Statistics"))) 
    .Tooltip(tooltip => tooltip 
     .Visible(true) 
     .Format("{0}%") 
    ) 


) 

Там нет синтаксических ошибок, на мой взгляд, а просто появляется мой график пусто, когда я загружаю страницу.

Может ли кто-нибудь объяснить мне синтаксис i shoud для исправления этой ошибки? Thx

ответ

1

В коде есть как минимум две основные проблемы.

Вы определили гистограмму, это должно быть круговая диаграмма:

@(Html.Kendo().Chart<MyModel>() 
    .Name("chart") 
    .Title(title => title 
     .Text("Share of Internet Population Growth, 2007 - 2012") 
     .Position(ChartTitlePosition.Bottom)) 
    .Legend(legend => legend.Visible(false)) 
    .Series(series => { 
     series.Pie(model => model.language, model => model.Count); 
    }) 
    .DataSource(ds => ds.Read(read => read.Action("displayChart", "Statistics"))) 
    .Tooltip(tooltip => tooltip 
     .Visible(true) 
     .Format("{0}%") 
    ) 
) 

Ваше действие возвращается тщетным, вместо ActionResult:

public class StatisticsController : Controller 
{  
    [HttpPost] 
    public ActionResult displayChart() 
    { 
     var results = DAL.StatisticsAccess.getTypesForStatistics(); 
     return Json(results); 
    } 
} 

Кроме того, вы можете сделать это:

Создать вид модели:

public class PieModel { 
    public string Language { get;set; } 
    public int Count { get;set; } 
} 

Добавьте модель к своей диаграмме.

@(Html.Kendo().Chart<PieModel>() { 
    ... 

Изменить запрос:

public IEnumerable<PieModel> getTypesForStatistics() 
{ 
    var dbo = new UsersContext(); 
    var all = (from a in dbo.Note 
         select a).ToList(); 
    var results = all.GroupBy(item => item.language.lang) 
         .Select(g => new PieModel 
         { 
          Language = g.Key, 
          Count = g.Count() 
         }); 
    return results.ToList(); 
} 
+0

Спасибо очень – FieryA

+0

Спасибо за ваше время, но карта все еще кажется пустой :( – FieryA

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