2017-10-18 7 views
0

Voici un script de graphique utilisant un graphique. js j'utilise graphique dans le tableau mvc 4 ne sont pas afficher, données sont rivage dans la variable, mais lorsque passer les données du contrôleur pour afficher les données ou ne pas afficher dans le graphique, l'erreur est system.string [] ou dans les étiquettes lorsque je mets dans les étiquettes alors les données de tableau sont montrées quand je vérifie dans la console de navigateur mais l'erreur est quelque chose comme ceci inactif n'est pas défini. s'il vous plaît examiner le code me dire où je me trompe.chart.js dans le graphique mvc ne sont pas afficher

<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> 

maintenant Voici 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; 
     } 


    } 

et c'est ma fonction

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; 
     } 
    } 
} 

Voici ma fonction vide mTotalMember (sur float [] Total, sur l'état de string []) ;

Répondre

0

Utilisez la méthode JsonConvert.SerializeObject avec la méthode Html.Raw pour obtenir une matrice javascript à partir de l'élément ViewBag. Vous n'avez pas besoin d'envelopper avec [ et ] comme le résultat de l'expression @Html.Raw(JsonConvert.SerializeObject(ViewBag.b)) sera un tableau.

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

Impressionnant. ça marche – user2697533