代码之家  ›  专栏  ›  技术社区  ›  Carl Hörberg

带有图表控件的DataBind提供NotImplementedException

  •  5
  • Carl Hörberg  · 技术社区  · 17 年前

    我用自己的类chartpoint的IEnumerable提供了一个Microsoft图表控件

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

    然后,我尝试对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 回复  |  直到 16 年前
        1
  •  12
  •   JaredPar    17 年前

    您使用的是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");
    
        2
  •  2
  •   Andrew Hare    17 年前

    是否使用迭代器块(即 yield return )?编译程序 不会生成 Reset 方法如果你这样做的话 生成一个 重置 方法,但方法抛出 NotImplementedException .

        3
  •  0
  •   user210844    16 年前

    在Connect上查看我的错误报告 here . 请对此进行投票,也许微软会在下一个图表版本中修复它。

    推荐文章