2014-09-02 4 views
0

검도 원형 차트에서 검도 막 대형 차트로 이동하려고합니다. 문제는 막 대형 차트가 데이터 한 개만 반환한다는 것입니다.검도 원형 차트에서 막 대형 차트

cshtml

 public ActionResult SM_GetSalesByEmployees() 
    { 
     List<SalesChart> items; 
     List<SalesChart> salesByEmpl; 

     using (StreamReader r = new StreamReader("C:\\Development\\Back Office Web\\Sandbox\\BackOffice.Web\\BackOffice.Web\\Content\\Data\\SalesByEmployee.json")) 
     { 
      string json = r.ReadToEnd(); 
      items = JsonConvert.DeserializeObject<List<SalesChart>>(json); 
      salesByEmpl = items.GroupBy(l => l.EmployeeName) 
         .Select(lg => 
          new SalesChart 
          { 
           Category = lg.Key,          
           Total = lg.Sum(w => w.Total)          
          }).ToList(); 
     } 
     return new CustomJsonResult 
     { 
      Data = salesByEmpl 
     }; 
    } 
    script 
     function getByEmployee(e) 
    { 
     var categorySelected = e.category; 
     var chart = $("#pieEmployee").data("kendoChart"); 
     $.post("Home/GetSalesByEmployee?EmpName=" + categorySelected, function (results) { 
      chart.setDataSource(new kendo.data.DataSource({ data: results })); 
     }); 

     chart.options.series[0].type = "bar"; 
     chart.options.series[0].ValueAxis = "${Total}"; 
     chart.options.series[0].categoryAxis = "{Category}"; 
     chart.options.categoryAxis.baseUnit = "months"; 
     chart.refresh(); 
    } 

내가 미안 이미지를 게시 할 수있는 충분한 명성을 해달라고 `

<div id="pieEmployeeContainer"> 
    @(Html.Kendo().Chart<SalesChart>().Name("pieEmployee").HtmlAttributes(new { style = "width: 90%;", @class = "fpos-chart" }) 
     .Title("Top 10") 
     .Legend(false) 
     .Theme("bootstrap") 
       .DataSource(ds => ds.Read("SM_GetSalesByEmployees", "Home")) 
     .Series(s => s 
      .Pie(m => m.Total, m => m.Category) 
      .Padding(0) 
     ) 

     .Tooltip(t => t 
      .Visible(true) 
      .Format("{0:c}") 
      .Template("#= category # <br /> #= kendo.format('{0:c}', value) # (#= kendo.format('{0:p}', percentage)#)") 
     ) 

     .Events(e => e.SeriesClick("getByEmployee")) 
     .Deferred() 
    ) 
</div> 

`

컨트롤러. 막 대형 차트는 모든 데이터를 표시하는 것이 아니라 하나의 데이터 요소 만 가져 와서 표시합니다. 도움을 주시면 대단히 감사하겠습니다.

답변

0

테스트 물건을 만들 수는 없지만 빠르게 살펴보면 원형 차트의 데이터 형식을 변경해야합니다. 백분율 (전체 시리즈 = 100)이 필요하므로보기 또는 컨트롤러에서 데이터를 변환해야합니다.

관련 문제