带有Chart控件的Databind给出了NotImplementedException

时间:2009-07-08 13:41:02

标签: 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; }
    }

然后我尝试DataBind IEnumerable< ChartPoint>:

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

但我在该行上遇到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

我做错了什么?

3 个答案:

答案 0 :(得分:12)

您使用的是C#迭代器吗?

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

您可能必须使用支持其迭代器上的重置的集合。实现此目的的最简单方法是使用List<T>来包装现有的IEnumerable<T>

例如

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

答案 1 :(得分:2)

您使用的是迭代器块(即yield return)吗?如果您生成Reset方法,但编译器将不会生成Reset方法,但该方法会抛出NotImplementedException

答案 2 :(得分:0)

查看有关Connect here的错误报告。请为此投票,MS可能会在下一个图表版本中修复它。