[ADO.NET] Copia di una row in TAB1 e tutte le figlie di TAB2 in nuova ...

mercoledì 15 aprile 2009 - 10.10

plaguebreath Profilo | Junior Member

Saleva tutti, cerco di spiegarmi meglio. Ho un dataset formato da due tabelle TAB1 e TAB2 visualizzate tramite due datagridview. Sono relazionate fra loro con una relation che prevede la FKIDTAB2 e la PKIDTAB1. Tutto bello, ora ecco la complicazione, aggiungo un menù, da cui posso selezionare la voce copia riga con figli. Premendo su detto pulsante vorrei che prendendo la selezione attuale della riga in TAB1 mi si crei una nuova row in TAB1 con i dati della riga precedentemente selezionata, tutte le righe figlie aggiunte alla TAB2 e che il bindingsource mi si posizioni automaticamente sulla nuova riga creata in TAB1 (creata ma non ancora salvata)
E' possibile fare una cosa simile ?? Ci sto sbattendo la testa da un po' ma non sono ancora venuto a capo di niente.
Ho scritto il seguente codice in relazione alla pressione del detto tasto:

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim oCurrencyManager As CurrencyManager = CType(DataGridView1.BindingContext(DataGridView1.DataSource), CurrencyManager)
Dim oCurrencyManager2 As CurrencyManager = CType(DataGridView2.BindingContext(DataGridView2.DataSource), CurrencyManager)

Dim row As DataRowView
Dim rowfiglie As DataRowView
Dim newrow As DataRow = dsTAB.Tables("TAB1").NewRow()
Dim newrowfiglia As DataRow = dsTAB.Tables("TAB2").NewRow()

row = oCurrencyManager.Current
''''''''''' rowfiglie = oCurrencyManager2.Current

newrow("note") = row.Item("note")
dsTAB.Tables("TAB1").Rows.Add(newrow)
End Sub

Mi aggiunge la riga della TAB1 ma come faccio a prelevare le sue righe figlie e copiarle ? Tramite un ciclo suppongo ma mi sono ancorato :(
Spero di essere stato chiaro nel limite del possibile. Grazie a tutti quelli che avranno la pazienza di leggere.

simbla79 Profilo | Junior Member

prova così ma non ti garantisco nulla

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

plaguebreath Profilo | Junior Member

Ho risolto in questa maniera:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Funziona però vorrei dei suggerimenti su eventuali migliorie o casi in cui questo metodo non può funzionare. Ho testato il tutto e sembra andare abbastanza bene.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5