2009-07-08 9 views
5

Alimento a un control gráfico de Microsoft con un IEnumerable de mi propia ChartPoint clasedatabind con controles tabla muestra NotImplementedException

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

entonces trata de databind el IEnumerable < ChartPoint>:

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

pero y luego golpea una NotImplementedException en esa fila:

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 

Wha ¿Estoy haciendo mal?

Respuesta

12

¿Está utilizando un iterador de C#?

Los iteradores de C# no implementan la función Restablecer en el IEnumerator generado y arrojarán una NotImplementedException si se llama. Parece que el control particular requiere que ese método esté presente.

Es probable que deba utilizar una colección que admita Restablecer en su iterador. La manera más sencilla de lograr esto es utilizar un List<T> para envolver su existente IEnumerable<T>

Por ejemplo

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

Resuelto, gracias! –

+0

+1 ¡Para una solución al problema! –

2

¿Está utilizando bloques iteradores (es decir, yield return)? El compilador no generará un método Reset si lo hace genera un método Reset pero el método arroja un NotImplementedException.

+0

Corrección leve. Genera un Restablecimiento (IEnumerator lo requiere), solo arroja una NotImplementedException – JaredPar

+0

Muy cierto - ¡respuesta corregida! –

0

Véase mi informe de fallo al conectar here. Vota por esto y tal vez MS lo arreglará en la próxima versión del Gráfico.

Cuestiones relacionadas