我使用我自己的类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
我做错了什么?
答案 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可能会在下一个图表版本中修复它。