Отображение даты на оси х с помощью Highcharts с использованием ASP.NET MVC - PullRequest
1 голос
/ 26 октября 2011

У меня есть следующий код C #:

public JsonResult Graph()
{
    var result = new Dictionary<DateTime, decimal> { { DateTime.Today.ToUniversalTime(), 1000 }, { DateTime.Today.AddDays(-1).ToUniversalTime(), 2000 }, { DateTime.Today.AddDays(-2).ToUniversalTime(), 5000 } };

    return Json(result.ToArray(), JsonRequestBehavior.AllowGet);
}

Когда я смотрю в firebug, данные JSON выглядят так:

[{"Key":"\/Date(1319515200000)\/","Value":1000},{"Key":"\/Date(1319428800000)\/","Value":2000},{"Key":"\/Date(1319342400000)\/","Value":5000}]

Мои конфигурации Highcharts выглядят так:

var options = {
    chart: {
        renderTo: 'chart',
    },
    xAxis: {
        type: 'datetime'
    },
    series: []
}

jQuery.getJSON("/graph", null, function (items) {
    var series = {
        type: 'column',
        data: []
    };

    jQuery.each(items, function (itemNo, item) {
        series.data.push({
            name: item.Key,
            y: item.Value
        })
    });

    options.series.push(series);

    chart = new Highcharts.Chart(options);
    chart.render();
});

На оси X не отображаются мои даты.Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 28 октября 2011

В итоге я использовал:

Dictionary<string, decimal>()

Я в основном передал дату в виде строки в представление и в итоге использовал

Date.parse(item.Key)

на стороне клиента.Работает просто отлично.

0 голосов
/ 26 октября 2011

Предполагая, что item.Key содержит что-то вроде «Дата (1319342400000)», вы можете попробовать следующее:

jQuery.each(items, function (itemNo, item) {
    var dateStr = item.Key;
    var dateVal = dateStr.substring(dateStr.indexOf('(')+1, dateStr.indexOf(')'));
    series.data.push([dateVal, item.Value]);
});

Кроме того, вам не нужна следующая строка:

chart.render();

А если вышеописанное не работает, можете ли вы проверить значение item.Key следующим образом:

jQuery.each(items, function (itemNo, item) {
    alert(item.Key);
    series.data.push(//...

Обновление:

Тогда вам не нужноиспользовать substring и indexOf.Просто измените jQuery.each следующим образом:

jQuery.each(items, function (itemNo, item) {        
    series.data.push([item.Key, item.Value]);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...