• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlanie daty używając google charts w ASP.NET MVC

Object Storage Arubacloud
0 głosów
204 wizyt
pytanie zadane 21 grudnia 2016 w C# przez Arqu07 Nowicjusz (120 p.)

Witam, 

Chciałbym na swojej stronie internetowej wyświetlić wykres używając danych z bazy przy użyciu google charts.         Mam taką oto bazę:

Są to przykładowe dane do poćwiczenia.

Kod kontrolera:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace GoogleProba.Controllers
{
    public class GoogleChartController : Controller
    {
        // GET: GoogleChart
        public ActionResult Column()
        {
            return View();
        }
        public JsonResult GetSalesData()
        {
            List<SalesData> sd = new List<SalesData>();
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
            {
                sd = dc.SalesData.OrderBy(a => a.Data).ToList();
            }

            var chartData = new object[sd.Count + 1];
            chartData[0] = new object[]{
                    "Data",
                    "Electronics",
                    "Book And Media",
                    "Home And Kitchen"
                };
            int j = 0;
            foreach (var i in sd)
            {
                j++;
                chartData[j] = new object[] { i.Data, i.Electronics, i.BookAndMedia, i.HomeAndKitch };
            }

            return new JsonResult { Data = chartData, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }
    }
}

 

Oraz kod widoku:

@{
    ViewBag.Title = "Column";
}

<h2>Column Chart With Animation</h2>

<br />
<div id="visualization" style="width:600px; height:300px">

</div>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
@section Scripts{
    <script>
                    $(document).ready(function () {
                        //Load Data Here
                        var chartData = null;
                        $.ajax({
                            url: '/GoogleChart/GetSalesData',
                            type: 'GET',
                            dataType: 'json',
                            data: '',
                            success: function (d) {
                                chartData = d;
                            },
                            error: function () {
                                alert('Error!');
                            }
                        }).done(function () {
                            drawChart(chartData);
                        });
                    });

                    function drawChart(d) {
                        var chartData = d;
                        var data = null;
                        data = google.visualization.arrayToDataTable(chartData);

                        var view = new google.visualization.DataView(data);
                        view.setColumns([0, {
                            type: 'date',
                            label: data.getColumnLabel(0),
                            calc: function () { return 0; }
                        }, {
                            type: 'number',
                            label: data.getColumnLabel(1),
                            calc: function () { return 0; }
                        }, {
                            type: 'number',
                            label: data.getColumnLabel(2),
                            calc: function () { return 0; }
                        }, {
                            type: 'number',
                            label: data.getColumnLabel(3),
                            calc: function () { return 0; }
                        }]);

                        var chart = new google.visualization.LineChart(document.getElementById('visualization'));
                        var options = {
                            title: 'Sales Report',
                            legend: 'bottom',
                            hAxis: {
                                title: 'year',
                                format: '#'
                            },
                            vAxis: {
                                minValue: 0,
                                maxValue: 1000000,
                                title: 'Sales Amount'
                            },
                            chartArea: {
                                left:100, top: 50, width:'70%', height: '50%'
                            },
                            animation: {
                                duration: 1000
                            }
                        };

                        var runFirstTime = google.visualization.events.addListener(chart, 'ready', function () {
                            google.visualization.events.removeListener(runFirstTime);
                            chart.draw(data, options);
                        });

                        chart.draw(view, options); 

                    }  

        google.load('visualization', '1', { packages: ['corechart'] });
      
    </script>
}

Mój problem polega na tym że gdy na osi X umieszczę dane z kolumny "Year" to wykres ładnie mi się generuje. Gdy zmienię to na datę bez zmiany typu przy generowaniu wykresu (type: 'number') wykres także się generuje lecz zamiast daty na osi wyświetlają sie ciągi liczb nic mi nie mówiące. Gdy już zmienie typ danych na "date" tak jak w kodzie powyżej wyskakuje mi błąd:  "All series on a given axis must be of the same data type". Domyślnie chciałbym wyświetlać sam czas jednak przy samym czasie nic się nie pojawia.

Czy jest ktoś w stanie rozwiązać mój problem albo podpowiedzieć jak inaczej łatwo wygenerować wykres z danych z bazy wyświetlający czas? Z góry dzięki.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
0 odpowiedzi 204 wizyt
pytanie zadane 23 września 2022 w C# przez everstudybee Użytkownik (610 p.)
0 głosów
0 odpowiedzi 210 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 2 marca 2020 w C# przez Moras Obywatel (1,620 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...