带有Chart控件的Databind给出了NotImplementedException

Car*_*erg 6 c# charts

我使用我自己的类ChartPoint的IEnumerable提供Microsoft Chart控件

    public class ChartPoint
    {
        public double Xvalue { get; set; }
        public double Yvalue { get; set; }
        public string Url { get; set; }
        public string Tooltip { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

然后我尝试DataBind IEnumerable <ChartPoint>:

serie.Points.DataBind(points, "Xvalue", "Yvalue", "Tooltip=Tooltip,Url=Url");
Run Code Online (Sandbox Code Playgroud)

但我然后在该行上遇到NotImplementedException:

 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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Jar*_*Par 13

你在使用C#迭代器吗?

C#迭代器不会在生成的IEnumerator上实现Reset函数,并且如果调用它将抛出NotImplementedException.看起来特定控件需要该方法存在.

您可能必须使用支持其迭代器上的Reset的集合.实现这一目标的最简单方法是使用a List<T>来包装现有的IEnumerable<T>

例如

List<ChartPoint> list = new List<ChartPoint>(points);
serie.Points.DataBind(list, "Xvalue", "Yvalue", "Tooltip=Tooltip,Url=Url");
Run Code Online (Sandbox Code Playgroud)