2012-03-07 1 views
0

私のページの1に2つのタブがあり、1つはグリッドに、1はデータのグラフのベースを示しています。私のモデルは、グリッドに表示されるオブジェクトのリストを含み、グラフのデータはViewBagに保存されます。しかし、Jqplotを使用してチャートを作成するにはどうすればよいですか?MVC3 JsonのエンコードされたデータをViewBagに渡して読み込み、jqplotにプロットする

私は私のコードでは、このようなものがあります:

var arr1 = new object[1]; 
        var arr2 = new object[dataModel.Count()]; 
        var ctr = 0; 
        foreach (var dm in dataModel) 
        { 
         arr2[ctr++] = new object[] { dm.SkuModel, dm.Qty }; 
        } 
        arr1[0] = arr2; 

        ViewBag.ChartData = Json(arr1); 

function drawChart() { 
     $.jqplot.config.enablePlugins = true; 
     //$.parseJSON("{{{'Verwerkende FruedenStunde Companaziert Eine industrie', 9}, {'Retail', 8}, {'Primaire producent', 7}, {'Out of home', 6}, {'Groothandel', 5}, {'Grondstof', 4}, {'Consument', 3}, {'Bewerkende industrie', 2}}}"); 
     var chartData = $.parseJSON("@ViewBag.ChartData"); 
     var chartData = eval("@ViewBag.ChartData"); 
     plotgraph = $.jqplot('jqplot', 
      [[['Verwerkende FruedenStunde Companaziert Eine industrie', 9], ['Retail', 8], ['Primaire producent', 7], ['Out of home', 6], ['Groothandel', 5], ['Grondstof', 4], ['Consument', 3], ['Bewerkende industrie', 2]]], 
     //chartData, 
      { 
      title: ' ', 
      seriesDefaults: { 
       shadow: true, 
       renderer: $.jqplot.PieRenderer, 
       rendererOptions: { padding: 2, sliceMargin: 2, showDataLabels: true } 
      }, 
      legend: { show: true, location: 'e' } 
     }); 
    } 

私はすでにjavascriptオブジェクトにJSON配列をリードバックすることが、私はそれを動作させることができないいくつかの方法を試してみたの。

おかげで、
czetsuya

答えて

1

コード:

--Controller:

var dataModel = MdlRepository.SearchDealerReport(model); 

var sb = new StringBuilder("["); 
var sbTicks = new StringBuilder("["); 
foreach (var dm in dataModel) 
{ 
    sb.Append(string.Format("{0},", dm.Qty)); 
    sbTicks.Append(string.Format("'{0}',", dm.Dealer)); 
} 
sb.Append("]"); 
sbTicks.Append("]"); 
ViewBag.ChartData = sb.ToString(); 
ViewBag.ChartTicks = sbTicks.ToString(); 

return PartialView("perDealer", dataModel); 

--view:

eval("@Html.Raw(ViewBag.ChartData)"); 
0

はdocument.readyセクションであなたのdrawChart()関数を呼び出します。

何かのように:私の問題を解決し

jQuery(document).ready(function() {  
    drawChart(); 
}); 
関連する問題