Linq e databinding con form padre-figlia

martedì 02 marzo 2010 - 12.27

disti Profilo | Newbie

Ciao a tutti,

ho un problema con i databinding.

Questa è la situazione:

una query linq che popola una datagridview tramite databinding su una form. Sulla stessa form sono presenti altre griglie che visualizzano altre informazioni. Questa form DEVE ESSERE IN SOLA LETTURA, e le informazioni nelle diverse griglie devono essere editate ciascuna con una particolare finestra "figlia".

Sulla finestra figlia ho una copia della griglia della finestra "padre", sulla quale devo inserire/modificare/cancellare righe.

Ora, se io nella finestra padre scrivo per esempio:

dim f as new ChildForm f.MyGridBindingSource.DataSource = Me.MyGridBindingSource.DataSource f.ShowDialog

nella finestra figlia ho la mia griglia correttamente popolata, ma quando per esempio elimino una riga questa IMMEDIATAMENTE scompare anche dalla griglia nella finestra padre sottostante.

Ovviamente nella mia finestra figlia io devo avere i classici OK e ANNULLA che mi permettono di apportare tutte le modifiche necessarie per poi decidere se accettarle o no.

Il comportamento attuale penso derivi dal fatto che i due databinding di fatto fanno riferimento agli stessi dati, per cui modificandoli da una parte si modificano anche dall'altra.

Ho poi provato questo:

dim f as new ChildForm f.MyGridBindingSource.DataSource = New List(Of MyType)(MyQueryResult.ToList) f.ShowDialog

Questo, creando una copia dei dati, elimina il problema delle modifiche sulla form figlia propagate immadiatamente alla form padre.

Il problema adesso è che non so come integrare le variazioni effettuate nel datacontext.

Non esiste un metodo in LINQ che confronta una collezione con un'altra e le "sincronizza"? Ho visto per esempio il metodo "merge", ma mi pare che non gestisca le righe eliminate e quelle modificate, ma solo quelle aggiunte. E' corretto?

Qualcuno ha idea di come posso risolvere?

Grazie a tutti!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5