Передача закодированных в JC MVC3 данных в ViewBag для чтения и печати в jqplot - PullRequest
0 голосов
/ 07 марта 2012

В 1 из моей страницы у меня есть 2 вкладки, 1, которые представляют данные в виде сетки, и 1, которая показывает основанную на графике базу данных. Моя модель содержит список объектов, которые будут представлены в сетке, данные для графика хранятся во 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' }
        });
    }

Я уже пробовал несколько способов чтения массива Json в объект javascript, но я не могу заставить его работать.

Спасибо,
czetsuya

Ответы [ 2 ]

1 голос
/ 14 января 2013

Код, который решил мою проблему:

- Контроллер:

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

- Просмотр:

eval("@Html.Raw(ViewBag.ChartData)");
0 голосов
/ 28 октября 2012

Вызовите функцию drawChart() в разделе document.ready.

Что-то вроде:

jQuery(document).ready(function () {    
    drawChart();
});
...