2008-10-21 10 views
5

Tengo una DataTable que tiene una columna booleana llamada [Inválido]. Necesito dividir estos datos por esta columna inválida: las filas válidas se pueden editar, las filas no válidas no. Mi plan original era usar dos BindingSources y establecer la propiedad Filter ([Inválido] = 'falso', por ejemplo), que se juega directamente en mis manos porque tengo dos DataGridViews y, por lo tanto, necesito dos BindingSources.Usar múltiples BindingSources en una DataTable

Esto no funciona: BindingSources establece la propiedad Filter asociada a DataTable, por lo que ambas fuentes contienen los mismos datos. ¿Tendré que hacer dos extracciones de la base de datos o puedo hacer lo que quiero con los objetos que tengo?

Respuesta

5

No creo que puedas hacerlo de la manera que esperas.

Puede usar dos vistas de datos diferentes de la misma tabla de datos, y vincular su datagridviews a esas?

5

Cuando se vincula a una DataTable, se está vinculando efectivamente a su vista predeterminada (DataTable.DefaultView). Y cuando configura la propiedad Filter de BindingSource, está configurando la propiedad Filter de la vista predeterminada, sobrescribiendo el filtro establecido por el otro BindingSource.

Así deadcat's answer is correct: que necesita para unirse a dos puntos de vista diferentes en el DataTable (uno de los cuales puede ser el DefaultView si lo prefiere):

bindingSource1.DataSource = myDataTable; 
bindingSource2.DataSource = new DataView(myDataTable); 

o

bindingSource1.DataSource = new DataView(myDataTable); 
bindingSource2.DataSource = new DataView(myDataTable); 
Cuestiones relacionadas