2017-10-18 20 views
0

グラフを使用したグラフスクリプトです。 js私はmvc 4のグラフでグラフを使用しています データが変数で海岸ですが、コントローラからのデータを表示してデータを表示するかチャートに表示しないとき、エラーはsystem.string []またはラベルに入れたときのラベルですブラウザのコンソールをチェックすると配列データが表示されますが、このようなエラーは定義されていません。私が間違っている場所を教えてください。今ここでmvcグラフのchart.jsが表示されない

<script> 
    var PieChartData = 
     { 
      labels: [@ViewBag.b], 
      datasets: [{ 
       label: 'ProductWise Sales Count', 
       backgroundColor: [ 
        "#f990a7", 
        "#aad2ed", 
        "#9966FF", 
        "#99e5e5", 
        "#f7bd83", 
       ], 
       borderWidth: 2, 
       data: [@ViewBag.a] 
      }] 
     }; 

     window.onload = function() { 
      var ctx1 = document.getElementById("Piecanvas").getContext("2d"); 
      window.myBar = new Chart(ctx1, 
       { 
        type: 'pie', 
        data: PieChartData, 
        options: 
         { 
          title: 
          { 
           display: true, 
           text: "ProductWise Sales Count" 
          }, 
          responsive: true, 
          maintainAspectRatio: true 
         } 
       }); 
     } 
</script> 

はのcontroler

 ICharts _ICharts; 

    public ChartController() 
    { 
     _ICharts = new mchart(); 
    } 

    [HttpGet] 
    public ActionResult PieChart() 
    { 
     try 
     { 
      float[] Total; 
      string[] status; 

      _ICharts.mTotalMember(out Total, out status); 
      ViewBag.a = Total; 
      ViewBag.b = status; 

      return View(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 


    } 

であり、これは私の機能

ここ
public class mchart : ICharts 
{ 
    public void mTotalMember(out float [] Total, out string[] Status) 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Real"].ToString())) 
     { 
      var productdata = con.Query<Member>("Sp_testing", null, null, true, 0, CommandType.StoredProcedure).ToList(); 

      var varTotal = (from temp in productdata 
          select temp.Percentage).ToArray(); 

      var varStatus = (from temp in productdata 
          select temp.LeadStatus).ToArray(); 

      Total = varTotal; 

      Status = varStatus; 
     } 
    } 
} 

である私の機能 無効mTotalMember(フロート[]合計うち、文字列[]の状態アウト) ;

答えて

0

JsonConvert.SerializeObjectと一緒にHtml.Rawメソッドを使用して、ViewBagアイテムからjavascript配列を取得します。式@Html.Raw(JsonConvert.SerializeObject(ViewBag.b))の結果として、[]をラップする必要はありません。

var myLabels = @Html.Raw(JsonConvert.SerializeObject(ViewBag.b)); 
var myData = @Html.Raw(JsonConvert.SerializeObject(ViewBag.a)); 

//Let's verify it 
console.log(myLabels); 
console.log(myData); 

var PieChartData = 
    { 
     labels : myLabels, 
     datasets: [{ 
      label: 'ProductWise Sales Count', 
      backgroundColor: [ 
       "#f990a7", 
       "#aad2ed", 
       "#9966FF", 
       "#99e5e5", 
       "#f7bd83", 
      ], 
      borderWidth: 2, 
      data: myData 
     }] 
    }; 
+1

恐ろしい仲間。それは働いている – user2697533

関連する問題