Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Databind with Chart controls gives NotImplementedException

Tags:

c#

charts

I feed a Microsoft Chart control with a IEnumerable of my own class ChartPoint

    public class ChartPoint
    {
        public double Xvalue { get; set; }
        public double Yvalue { get; set; }
        public string Url { get; set; }
        public string Tooltip { get; set; }
    }

then i tries to DataBind the IEnumerable< ChartPoint>:

serie.Points.DataBind(points, "Xvalue", "Yvalue", "Tooltip=Tooltip,Url=Url");

but i then hits a NotImplementedException on that row:

 System.Linq.Iterator`1.System.Collections.IEnumerator.Reset() +29
   System.Web.UI.DataVisualization.Charting.DataPointCollection.DataBind(IEnumerable dataSource, String xField, String yFields, String otherFields) +313

What am I doing wrong?

like image 651
Carl Hörberg Avatar asked Jul 08 '09 13:07

Carl Hörberg


2 Answers

Are you using a C# iterator?

C# iterators do not implement the Reset function on the generated IEnumerator and will throw a NotImplementedException if it is called. It looks like the particular control requires that method to be present.

You will likely have to use a collection which supports Reset on it's iterator. The easiest way to achieve this is to use a List<T> to wrap your existing IEnumerable<T>

For example

List<ChartPoint> list = new List<ChartPoint>(points);
serie.Points.DataBind(list, "Xvalue", "Yvalue", "Tooltip=Tooltip,Url=Url");
like image 149
JaredPar Avatar answered Oct 07 '22 21:10

JaredPar


Are you using iterator blocks (i.e. yield return)? The compiler won't generate a Reset method if you do generates a Reset method but the method throws a NotImplementedException.

like image 27
Andrew Hare Avatar answered Oct 07 '22 22:10

Andrew Hare