with example ejemplos data c# .net winforms data-binding datagridview

example - fill datagridview c# with datatable



Lista<T> vs BindingList<T> Ventajas/DisAdvantages (2)

¿Alguien puede describir cuál es la diferencia entre los dos para mi proyecto?

Actualmente tengo una List<MyClass> y configuro BindingSource para eso y un DataGridView para BindingSource.

He implementado IEditableObject así que cuando se llama a CancelEdit reverso mi objeto a lo que era con un Memberwise.Clone()

¿Cambiaré mi Lista a una lista de encuadernación para resolver esto y cuáles son las ventajas de usar una lista de encuadernación?


Un BindingList permite el enlace de datos bidireccional mediante el uso de eventos, una Lista no activa eventos cuando su colección cambia.

No creo que solucione tu problema en particular.


Una List<> es simplemente una matriz de cambio de tamaño automático, de elementos de un tipo determinado, con un par de funciones auxiliares (por ejemplo: ordenar). Son solo los datos, y es probable que los use para ejecutar operaciones en un conjunto de objetos en su modelo.

Un BindingList<> es un contenedor alrededor de una lista de IBindingList o una colección, que implementa la interfaz IBindingList . Esta es una de las interfaces estándar que admiten enlaces de datos bidireccionales. Funciona mediante la implementación del evento ListChanged , que se ListChanged cuando agrega, elimina o establece elementos. Los controles vinculados escuchan este evento para saber cuándo actualizar su pantalla.

Cuando configura un DataSource de BindingSource en una List<> , internamente crea una BindingList<> para envolver su lista. Es posible que desee BindingList<> su lista con BindingList<> usted mismo si desea acceder a ella fuera de BindingSource, pero de lo contrario es lo mismo. También puede heredar de BindingList<> para implementar un comportamiento especial al cambiar elementos.

IEditableObject es manejado por BindingSource. Llamará a BeginEdit en cualquier objeto de implementación cuando cambie los datos en cualquier control vinculado. Luego puede llamar a EndEdit / CancelEdit en BindingSource y lo pasará a su objeto. Moverse a una fila diferente llamará también a EndEdit.