2013-01-18 37 views
0

我试图用以下信息显示Kendo的dataviz饼图。Kendo的dataviz饼图 - 显示远程数据

我将'结果'从控制器传回我的视图。

results is what I'm passing back to my view.

我的视图包含饼图:

@(Html.Kendo().Chart<PropertyViewModel>() 
     .Name("chart") 
     .Title("Properties") 
     .Legend(legend => legend 
      .Position(ChartLegendPosition.Top) 
     ) 
     .DataSource(ds => ds.Read(read => read.Action("GetPropertiesChart", "Home"))) 
     .Series(series => { 
      series.Pie(model => model.Address.State, model => model.Address.State.Count().ToString()); 
     }) 
     .Tooltip(tooltip => tooltip 
      .Visible(true) 
      .Format("{0:N0}") 
     ) 
    ) 

我什么也没得到,但一个空白区域,我的网页上,其中饼图应该的。

控制器代码:

public ActionResult GetPropChart() 
    { 
     var allProps = PService.GetAll(); 

     var props = allProps.Cast<PropViewModel>().ToList(); 


     var results = props 
       .GroupBy(item => item.Address.State) 
       .Select(g => new 
       { 
        State = g.Key, 
        Count = g.Select(l => l.Address.State).Count() 
       }); 

     return Json(results); 
    } 
+0

为数据提供服务的控制器操作方法如何?还有在控制台中的任何JavaScript错误?你使用什么浏览器?您是否尝试将该集合传递给BindTo方法并查看它是否可用? –

+0

我已经添加了上面的控制器代码。 我没有得到JavaScript错误,我正在使用Chrome。我没有尝试将集合传递给BindTo方法,但我会给出一个镜头。 – Mithrilhall

回答

0

你收益的模型如下:

.Select(g => new 
     { 
      State = g.Key, 
      Count = g.Select(l => l.Address.State).Count() 
     } 

但是你的系列定义是不同的(没有ADRESS属性)

series.Pie(model => model.Address.State) 

而且绑定到方法(如model.Address.State.Count()。ToString())不受支持 - 创建正则p反而拥有价值的roperty。