Jestem nowy zarówno w dziedzinie MVC, jak i Kendo, więc będziesz musiał wytrzymać ze mną. Oto moja klasa bazowa wykres (klasa DatedChart używam jest tylko wykres typu <DateTime, double>
:Tworzenie widoku wykresu Kendo z mojej klasy modelu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Project.Models.Charts
{
public class NewChart<XType, YType> : IMailListener
where XType:IComparable
where YType:IComparable
{
public Dictionary<string, DataSeries<XType, YType>> SeriesList { get; protected set; }
public string Title { get; set; }
public string XLabel { get; set; }
public string YLabel { get; set; }
public NewChart(string title, string xLabel, string yLabel)
{
this.SeriesList = new Dictionary<string, DataSeries<XType, YType>>();
this.Title = title;
this.XLabel = xLabel;
this.YLabel = yLabel;
}
public void AddSeries(DataSeries<XType, YType> series)
{
this.SeriesList.Add(series.Name, series);
}
public virtual void OnUpdate(IEnumerable<MailEntry> mail)
{
foreach (var ds in this.SeriesList.Values)
{
ds.OnUpdate(mail);
}
}
}
}
A oto klasa dla serii danych:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Project.Models.Charts
{
public abstract class DataSeries<XType, YType> : IMailListener
where XType : IComparable
where YType : IComparable
{
public string Name;
public List<Pair<XType, YType>> values { get; private set; }
protected DataSeries(string name)
{
this.Name = name;
this.values = new List<Pair<XType, YType>>();
}
public abstract void OnUpdate(IEnumerable<MailEntry> mail);
}
}
Co muszę zrobić, to aby utworzyć widok, który wyświetli jeden z tych wykresów. Czytałem wiele przykładów, ale trudno mi zobaczyć, jak odnoszą się one do tego, co próbuję zrobić - wiele z nich glosuje, jak dopasować obejrzyj dowolny model, nie potrzebuję niczego na przykład, po prostu coś, co pokaże mi, jak przenieść dane z jednego z tych wykresów do formatu, w którym Kendo's LineChart klasa może wyświetlać serię. Mój widok może wyglądać mniej więcej tak:
@using DatedChart = Project.Models.Charts.DatedChart
@using DatedSeries = Project.Models.Charts.DataSeries<System.DateTime, double>
@model DatedChart
<div class="nice-module nice-smallchart center">
// Magic here?
</div>
Jakieś wskazówki?
Edycja:
Objaśnienie modelu My wzór składa się z przedmiotów na wykresie, gdzie każdy wykres ma tytuł, wokół osi x, osi y, a zestaw jednego lub więcej serii danych. Każda seria jest innym zbiorem punktów (to jest w swoim własnym kolorze, a jeśli jest to wykres liniowy, tylko te punkty będą ze sobą połączone). Zrobiłem sparametryzowaną klasę podstawową, aby osie X i Y mogły mieć dowolny typ, ale na razie używam tylko obiektów DateTime dla typu X i podwójnych dla typu y, stąd DatedChart, które będą miały serię, których punkty danych są parami. Przykładem tego modelu wykresu może być wykres przedstawiający reputację czterech użytkowników przepełnienia stosu w okresie jednego miesiąca. Każdy użytkownik miałby swoją serię punktów (x, y), gdzie x jest DateTime dnia, a y jest liczbą postów.
Edytowałem mój post nieco, aby wyjaśnić, co myślałem o moim modelu. Będę bliżej przyjrzeć się twojemu kodowi jutro, kiedy jestem na moim komputerze. Zauważam, że twój ActionResult zapełnia obiekt modelu - ponieważ mój model jest oczywiście już zapełniony danymi przez mój backend, czy mogę po prostu zwrócić obiekt? – Troy
* ChartModel * to tylko przykład. Możesz mieć dowolny model. –
Próbuję więc użyć automatycznego powiązania DataSource Kendo, zamiast generować JSON z niestandardowego widoku, dlatego miałem problem z korelowaniem twojej odpowiedzi z przykładami. Czy wiesz coś na temat wiązania z modelem, który nie jest dostosowany do domyślnego formatu, którego oczekuje Kendo? Czy mogę określić niestandardowy sposób odczytywania wartości z JSON, nadal wykorzystując powiązanie danych? – Troy