0

amcharts の株価チャートを使用しています。次のコードを使用すると、グラフが正常に読み込まれ、すべてが機能します。

var chart = AmCharts.makeChart("chartdiv", {
    "type": "stock",
    "theme": "light",
    "dataSets": [{
        "title": "Values",
        "color": "#b0de09",
        "fieldMappings": [{
            "fromField": "value",
            "toField": "value"
        }, {
             "fromField": "average",
             "toField": "average"
        }],
        "dataProvider": @Html.Raw(ViewBag.ChartData),
        "categoryField": "date"
   }],
   ...

そして私のコントローラー:

public class ChartController : Controller
{
    public IActionResult Index()
    {
        ViewBag.ChartData = JsonConvert.SerializeObject(GetChartData ());
        return View();
    }
}

ただし、次のコードを追加して株式イベントを追加しようとすると、1) チャートが表示されなくなり、2) コントローラーの GetChartEvents アクションが呼び出されないため、明らかにデータが返されません。

var chart = AmCharts.makeChart("chartdiv", {
    "type": "stock",
    "theme": "light",
    "dataSets": [{
        "title": "Values",
        "color": "#b0de09",
        "fieldMappings": [{
            "fromField": "value",
            "toField": "value"
        }, {
             "fromField": "average",
             "toField": "average"
        }],
        "dataProvider": @Html.Raw(ViewBag.ChartData),
        "categoryField": "date",
        "eventDataLoader": {
            "url": @Url.Action("GetChartEvents", "ChartController"),
            "format": "json",
            "showCurtain": true,
            "showErrors": true,
            "async": true
        }
   }],
   ...

そしてコントローラーで

public class ChartController : Controller
{
    …
    [HttpGet]
    public IActionResult GetChartEvents()
    {
        ChartEvent[] events = new ChartEvent[3];
        events[0] = new ChartEvent(new DateTime(2007, 12, 17));
        events[1] = new ChartEvent(new DateTime(2008, 10, 27));
        events[2] = new ChartEvent(new DateTime(2009, 07, 06));

        return Json(events);
    }
}

ChartEvent は私自身のクラスですが、GetChartEvents が呼び出されることはないため、返されるデータがどのようにフォーマットされるかは問題ではないと思います。ビューで、私が置き換えると

"url": @Url.Action("GetChartEvents", "ChartController"),

"url": "/Chart/GetChartEvents",

GetChartEvents が呼び出されることはありませんが、グラフ自体は表示されます。イベントをViewBagに配置しようとしましたが、それも機能しません

"dataProvider": @Html.Raw(ViewBag.ChartData),
"stockEvents": @Html.Raw(ViewBag.ChartEvents)

最後のメモ (およびサニティ チェック!) として、@Html.Raw(ViewBag.ChartEvents) の内容をページに出力すると、次のように表示されます。

[{"date":"Date(2007,12,17)","type":"arrowUp","backgroundColor":"#00CC00","graph":"g1","description":" "}, {"date":"Date(2008,10,27)","type":"arrowUp","backgroundColor":"#00CC00","graph":"g1","description":" "}, { "date":"Date(2009,07,06)","type":"arrowUp","backgroundColor":"#00CC00","graph":"g1","description":" "}]

どんな助けや洞察も大歓迎です。

4

1 に答える 1