Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[C#] Aggiornamento gerarchico.
lunedì 09 novembre 2009 - 17.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
blufix79
Profilo
| Newbie
1
messaggi | Data Invio:
lun 9 nov 2009 - 17:12
Salve ragazzi.
Ho da poco iniziato a studiare C# e sono ancora agli inizi.
Sto cercando di capire come funziona l'aggiornamento gerarchico mediante il componente TabelAdapterManager, ma ho trovato delle difficoltà. Nel mio database ho due tabelle correlate con una relazione uno a molti quindi di tipo "padre" -> "figlio".
Su un Form ho trascinato i nodi del dataset di entrambe le tabelle, dallo stesso nodo gerarchico, la tabella padre in formato dettagli e la tabella figlio in formato dataGrid.
Se modifico un record esistente sulla tabella figlio e clicco sul pulsante save della bindingNavigator non ho nessun problema, ma quando voglio aggiungere un nuovo record padre e contemporaneamente dei record figli, non ottengo il risultato sperato.
Allora ho seguito questa procedura su msdn: Aggiornamento gerarchico -
http://msdn.microsoft.com/it-it/library/bb384432.aspx
Quindi ho aggiunto le righe di codice necessarie indicate dalla procedura ma il problema si presenta sempre.
Io ho risolto in questo modo: aggiungendo all'evento AddingNew del bindigSource della tabella figlio oltre al padreBindingSource.EndEdit() anche padreTableAdapter.Update().
Visto questo volevo chiedervi se esiste un modo più raffinato per ottenere lo stesso.
P.S. La procedura in msdn funziona correttamente con il database d'esempio NorthWind perche la chiave primaria della tabella customers non è autoincrementante, e qundi devi inserire manualmente l'id. Nel mio caso la chiave primaria è autoincrementante.
Grazie a tutti in anticipo per la disponibilità!
EDIT:
ho fatto delle prove sia con MySql che con Sql Server. Dicevo di aver risolto ma in effetti mi accorgo che il tutto funziona solo su Sql Server, su MySql no. Vi posto il codice:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void protocollo_corrispondenzaBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.protocollo_corrispondenzaBindingSource.EndEdit();
this.allegatiBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.gestione_edileDataSet);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: questa riga di codice carica i dati nella tabella 'gestione_edileDataSet.allegati'. È possibile spostarla o rimuoverla se necessario.
this.allegatiTableAdapter.Fill(this.gestione_edileDataSet.allegati);
// TODO: questa riga di codice carica i dati nella tabella 'gestione_edileDataSet.protocollo_corrispondenza'. È possibile spostarla o rimuoverla se necessario.
this.protocollo_corrispondenzaTableAdapter.Fill(this.gestione_edileDataSet.protocollo_corrispondenza);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Program.mainForm.frmForm1Attivo = null;
}
private void allegatiBindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
this.protocollo_corrispondenzaBindingSource.EndEdit();
this.protocollo_corrispondenzaTableAdapter.Update(gestione_edileDataSet.protocollo_corrispondenza);
}
}
la tabella padre è "prorocollo_corrispondenza" e "allegati" quella correlata.
Io procedo in questo senso, premendo il pulsante sul bindingNavigator per aggiungere un nuovo record, sul controllo agganciato al capo id_protocollo appare un -1, quando clicco sulla riga della dataGrid, viene esguito l'evento addingNew. Utilizzando SqlServer viene subito resituito l'id della riga assegnato e quindi associato alla chiave esterna della tabella allegati, infatti questo appare subito sulla nuova riga della dataGrid. Utilizzando Mysql, questo non accade, sull'id_protocollo rimane quel -1 che viene associato alla chiave esterna della tabella allegati.
Qualcuno conosce il motivo?
Grazie.
Torna su
Stanze Forum
Elenco Threads
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 !