2017-07-28 51 views
0

我的目標是創建一個列高圖,顯示各種推銷員的名稱以及他們銷售多少。我寫了這個代碼從我的SQL數據庫返回的名稱和每個業務員的銷售總和:LINQ SQL方法不填充Highcharts

[HttpPost] 
    public JsonResult ChartVendedores() 
    { 
     //Retorna um JSON contendo o nome do vendedor e o valor por ele vendido, usando inner join pelo id do vendedor. 
     try 
     { 
      var resultado = (from ve in db.tblVendedor 
          join vn in db.tblVenda on ve.vendedor_id equals vn.vendedor_id 
          group vn by new 
          { 
           ve.vendedor_nome 
          }into g 
          select new { 
           vendedor_nome = g.Key.vendedor_nome, 
           venda_valor = g.Sum(x => x.venda_valor) 
          }).ToList(); 

      var jsonResult = new 
      { 
       Nomes = resultado.Select(x => x.vendedor_nome), 
       Valores = resultado.Select(x => x.venda_valor) 
      }; 

      return Json(resultado); 
     }catch(Exception) 
     { 
      return null; 
     } 
    } 

這是被創建的圖表,其中,該方法被調用,它是suposed填補圖表與數據庫的返回數據:

<script> 
$(function() { 
    $.ajax({ 
     url: '/Vendedores/ChartVendedores', 
     type: 'post', 
     async: false, 
     sucess: function (data) { 
      //Constrói o gráfico com os valores retornados pelo banco. 
      Highcharts.chart('container', { 
       chart: { 
        type: 'column' 
       }, 
       title: { 
        text: 'Venda dos Colaboradores' 
       }, 
       xAxis: { 
        categories: [ 
         data.Nomes 
        ], 
        crosshair: true 
       }, 
       yAxis: { 
        min: 0, 
        title: { 
         text: 'Valor (R$)' 
        } 
       }, 
       tooltip: { 
        headerFormat: '<span style="font-size:10px">{point.key}</span><table>', 
        pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' + 
        '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>', 
        footerFormat: '</table>', 
        shared: true, 
        useHTML: true 
       }, 
       plotOptions: { 
        column: { 
         pointPadding: 0.2, 
         borderWidth: 0 
        } 
       }, 
       series: [{ 
        name: 'Valores', 
        data: data.Valores 
       }] 
      }); 
     } 
    }) 
}) 

我是什麼我失蹤?只要代碼去,我不認爲我在方法中寫了任何錯誤的代碼。我說錯了嗎?我操縱它錯了嗎?我試圖刪除我的Ajax代碼,只留下圖表本身,因爲它位於highchart.com上並且它工作正常,所以問題不在我的容器div或圖表代碼中。

編輯:正如下面的評論,我看着我的控制檯,我收到一條關於Highcharts需要的進口產品的警告。減退如下is this one.看到這個後,我試圖刪除AJAX,並只使用highchart code。有效!對於當圖表嘗試使用一些這方面的原因:

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 

當圖表代碼包含內部sucess: function(data){}

注意它沒有找到它:我在代碼的beggining進口的一切,同時包含Ajax的腳本被寫入最後。

+0

嘗試'return Json(resultado,JsonRequestBehavior.AllowGet);'。參考這篇文章:https://stackoverflow.com/questions/8464677/why-is-jsonrequestbehavior-needed –

+0

沒有改變,@KhanhTO – William

+0

@William,你是否在前端獲取數據。你可以確保在瀏覽器開發者控制檯中返回json結果。瀏覽器控制檯中是否有錯誤? –

回答

1
$.ajax({ 
    url: '/Vendedores/ChartVendedores', 
    type: 'post', 
    async: false, 
    sucess: function (data) { 

應改爲:

$.ajax({ 
    url: '/Vendedores/ChartVendedores', 
    type: 'post', 
    async: false, 
    success: function (data) { 

您有拼錯success

+0

哦,我現在很尷尬。謝謝。 – William

0

看看這個,你正在使用的回報(resultado),但要返回的JSON對象是jsonResult,所以用這個:

var resultado = (from ve in db.tblVendedor 
         join vn in db.tblVenda on ve.vendedor_id equals vn.vendedor_id 
         group vn by new 
         { 
          ve.vendedor_nome 
         }into g 
         select new { 
          vendedor_nome = g.Key.vendedor_nome, 
          venda_valor = g.Sum(x => x.venda_valor) 
         }).ToList(); 

     var jsonResult = new 
     { 
      Nomes = resultado.Select(x => x.vendedor_nome), 
      Valores = resultado.Select(x => x.venda_valor) 
     }; 

     return Json(jsonResult); 

請測試,並讓我知道,如果它的工作原理:)

 for (var i in data) { 
         // Add some text to the new cells: 
            cell1.innerHTML = data[i].Nomes ; 
            cell2.innerHTML = data[i].Valores ; 
           } 
+0

感謝您的觀察!你是對的。但仍然沒有填充圖表。 – William

+0

請把你的josn結果從瀏覽器粘貼到這裏,這樣我就可以檢查出現了什麼問題 –

+0

並確保你在迭代數據,我想你的響應是一個json數組,所以你需要使用for循環遍歷所有數據結果。像這樣,看到我編輯的答案 –