我使用我自己的 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; }
}
然后我尝试对 IEnumerable 进行数据绑定(bind):
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
我究竟做错了什么?
最佳答案
你在使用 C# 迭代器吗?
C# 迭代器不会在生成的 IEnumerator 上实现 Reset 函数,并且在调用时会抛出 NotImplementedException。看起来特定控件需要存在该方法。
您可能必须使用一个在其迭代器上支持 Reset 的集合。实现这一点的最简单方法是使用 List<T>
来包装现有的 IEnumerable<T>
例如
List<ChartPoint> list = new List<ChartPoint>(points);
serie.Points.DataBind(list, "Xvalue", "Yvalue", "Tooltip=Tooltip,Url=Url");
关于c# - 带有 Chart 控件的数据绑定(bind)给出了 NotImplementedException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1098147/