Šta je novo?

ZedGraph kontrola i prikazivanje vremena

voodoo_

Čuven
Učlanjen(a)
31.08.2003
Poruke
9,706
Poena
920
Ovo možda ide u web programiranje, mada pošto je u pitanju .NET, može i ovde

Imam ASP.NET stranicu (VS 2008 SP1) sa ZedGraph kontrolom za iscrtavanje grafikona. Kao data source koristim DataTable tabelu u koju su prethodno povučeni podaci iz SQL baze. U tabeli su mi od značaja dve kolone, jedna sa integer vrednostima, druga sa vremenom uskladištenim kao stringovi (konvertuju se u DateTime bez problema, CultureInfo.InvariantCulture itd). Onda se te dve kolone navedu kao source za X i Y osu i ZedGraph iscrta grafikon.

Šta je problem - ZedGraph ne barata sa DateTime vrednostima već one moraju da se konvertuju u XDate, što je faktički wrapper klasa gde se vreme čuva kao double. Da ne bih bespotrebno kopirao tabelu, kad popunim DateTable iz baze, ubacim još jednu kolonu u koju upišem one datume samo konvertovane u XDate, pa tu kolonu navedem kao izvor za X osu. Međutim, ZedGraph to potpuno ignoriše i uopšte ne učitava datume kako treba. Konverzija String u DateTime prolazi lepo, DateTime u XDate isto, ali završavam sa nekim levim datumima u X osi.

ZedGraph je u poslednjoj verziji, ceo dan debagujem i guglam ko magarac i slaba vajda, moguće da mi je nešto promaklo pa me zanima da li je neko imao iskustva sa ovom kontrolom i datumima (svejedno da li su u pitanju desktop aplikacije ili ASP.NET stranice)?
 
Daj kod.

Jesi postavio tip x ose na Date?
 
Jesam. Kad stavim na Date, izbacuje datume '99-'00 godine (a datumi u tabeli su ovogodišnji). Kad stavim na onaj drugi Date (zaboravio sam kako se zove), labeluje stavke sa "date error".
Inače, grafikon se iscrtava kako treba, u smislu da mi pravilno prikaže i poveže poslednjih nekoliko numeričkih vrednosti na Y osi, jedino što datumi koji se ispisuju na X nemaju veze s mozgom (a format za X osu je podešen kako treba, i ZedGraph ga poštuje).
Nemam kod na ovom računaru, tek za koji dan, u međuvremenu svi predlozi su dobrodošli.
 
Pretpostavljam i da si pozvao AxisChange na kraju? Ne znam ovako napamet gde bi mogao da bude problem. Ja sam ga koristio nešto malo, ali sam iz baze čitao u PointPairList.
 
U krajnjem slučaju probaću i tu varijantu, hvala na predlogu.
 
Rešio problem... trebalo je eksplicitno kastovati XDate u double pre upisivanja, mada smem da se zakunem da sam i to probavao, ali posle toliko sati gledanja u kod, ko zna šta je sve bilo.

Kod:
table.Columns.Add("XDATE", typeof(double));
foreach (DataRow r in table.Rows)
    r["XDATE"] = (double) new XDate(DateTime.ParseExact(r["Time"].ToString().Trim(), "s", CultureInfo.InvariantCulture));

Ovo radi.
 
Nazad
Vrh Dno