pasar net insertar datos data asp .net data-binding datatable dataview

insertar - .Net DataView y DataTable Binding



insertar datos en un datatable vb net (1)

Tengo una aplicación simple de Windows Forms que vincula un DataView a un ListBox. Este DataView utiliza Linq para ordenar mi DataTable por una columna específica que desciende. Mi ListBox luego se une al DataView. Luego tengo un formulario simple para agregar datos a DataTable. Cuando agrego un DataRow a DataTable, aparece en el ListBox.

Tengo curiosidad sobre lo que sucede detrás de escena ... He leído :

Un objeto DataView es una vista personalizada de una sola tabla de datos que se puede filtrar u ordenar. Una vista de datos es la "instantánea" de datos utilizada por los controles de complejo. Puede vincular de forma simple o compleja los datos dentro de una vista de datos, pero tenga en cuenta que está vinculando una "imagen" fija de los datos en lugar de una fuente de datos limpia y actualizada.

Hubiera pensado que dado que DataView es una "instantánea", no se habría actualizado automáticamente. ¿DataView agrega un evento para actualizar cuando se modifica la DataTable subyacente? No me malinterpreten, así es como quiero que funcione, pero ¿siempre es así?


DataView no es una instantánea. Se actualiza automáticamente e inmediatamente a medida que cambia la DataTable subyacente. Las filas nuevas agregadas a DataTable que cumplan con los criterios de filtro de DataView aparecerán automáticamente en DataView . Del mismo modo, las filas eliminadas de DataTable desaparecerán automáticamente de DataView .

Lo siguiente ilustra la naturaleza dinámica de DataView incluso cuando se usa LINQ:

using System; using System.Linq; using System.Data; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add("FirstName"); var query = from row in dt.AsEnumerable() where row.Field<string>("FirstName").StartsWith("S") select row; DataView view = query.AsDataView(); Console.WriteLine(view.Count); // Prints 0 dt.Rows.Add("Sam"); dt.Rows.Add("John"); Console.WriteLine(view.Count); // Prints 1 dt.Rows.Add("Sally"); dt.Rows.Add("Mary"); Console.WriteLine(view.Count); // Prints 2 dt.Rows.RemoveAt(0); Console.WriteLine(view.Count); // Prints 1 } } }

¿DataView agrega un evento para actualizar cuando se modifica la DataTable subyacente?

Este es un detalle de implementación interna, pero es plausible que esto use eventos.

Tenga en cuenta que puede usar el método DataTable.Copy para copiar una DataTable , si realmente desea crear una instantánea de la DataTable .