Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c#] visualizzazione di due tabelle relazionate

    Salve, vorrei visualizzare in una form due tabelle con relazione 1 a molti nello stesso tipo di visualizzazione di Access.
    Mi spiego meglio:
    tabella_clienti(id,cognome);
    tabella_prodotti(id,descrizione,id_cliente);

    In Access se applico l'integrità referenziale alla relazione, quando faccio un inserimento nella tabella_clienti, mi compare un + nella riga del cliente. Cliccando sul + posso inserire un prodotto nella tabella prodotti per quel cliente (quindi verrà aggiornata in automatico la chiave esterna id_cliente).
    Qualcuno sa spiegarmi nella datagridview come posso far visualizzare questo tipo di visualizzazione che mi permetta di gestire entrambe le tabelle in stile Access ?
    Spero di essere stato chiaro..
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  2. #2
    vedo che nessuno è riuscito ad aiutarmi. Allora vi aiuto ad aiutarmi ;-p
    Ho trovato un esempio funzionante che fa al caso mio. Solo che invece di visualizzare direttamente la tabella figlia, se clicco sul + mi visualizza una scritta linkata. Al click della scritta mi visualizza il contenuto della tabella figlia.

    il link da cui si può prendere questo esempio è di msdn:
    http://msdn.microsoft.com/it-it/libr...(v=vs.80).aspx
    E l'argomento in questione è DataGrid.
    In questo esempio non capisco qual è l'istruzione che mi fa spuntare il +, inizialmente pensavo che bastava impostare la relazione con:

    codice:
    // Create a DataRelation, and add it to the DataSet. 
    DataRelation dr = new DataRelation ("custToOrders", cCustID, cID); myDataSet.Relations.Add(dr);
    ma provandolo non va.
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  3. #3
    Sono riuscito a capire che:
    DataRelation dr = new DataRelation("custToOrders", cCustID, cID);
    mette in relazione le due tabella con relazione padre-figlio, questo è proprio quello che volevo ottenere io (in parte).
    Il problema fondamentale è che Vedo la tabella Costumer e il simbolo +, però cliccando sul + non vedo direttamente la tabella Orders (tabella figlia), ma vedo "custTOOrders" che linka alla tabella figlia. Posto direttamente il codice:

    codice:
        public partial class Form1 : Form
        {
            private DataGrid myDataGrid;
            private DataSet myDataSet;
          
            public Form1()
            {
                InitializeComponent();
    
                this.myDataGrid = new DataGrid();
                myDataGrid.Size = new Size(400, 400);
                this.Controls.Add(myDataGrid);
    
                // Create a DataSet.
                myDataSet = new DataSet("myDataSet");
    
                // Create two DataTables.
                DataTable tCust = new DataTable("Customers");
                DataTable tOrders = new DataTable("Orders");
    
                // Create two columns, and add them to the first table.
                DataColumn cCustID = new DataColumn("CustID", typeof(int));
                DataColumn cCustName = new DataColumn("CustName");
                DataColumn cCurrent = new DataColumn("Current", typeof(bool));
                tCust.Columns.Add(cCustID);
                tCust.Columns.Add(cCustName);
                tCust.Columns.Add(cCurrent);
    
                // Create three columns, and add them to the second table.
                DataColumn cID = new DataColumn("CustID", typeof(int));
                DataColumn cOrderDate = new DataColumn("orderDate", typeof(DateTime));
                DataColumn cOrderAmount = new DataColumn("OrderAmount", typeof(decimal));
                tOrders.Columns.Add(cOrderAmount);
                tOrders.Columns.Add(cID);
                tOrders.Columns.Add(cOrderDate);
    
                // Aggiungo le due tabelle al DataSet
                myDataSet.Tables.Add(tCust);
                myDataSet.Tables.Add(tOrders);
    
                // Imposto per il DataGrid da dove prendere i dati (Dataset, tabella padre).
                myDataGrid.SetDataBinding(myDataSet, "Customers");
                
                // Create a DataRelation, and add it to the DataSet.
                DataRelation dr = new DataRelation("custToOrders", cCustID, cID);
                myDataSet.Relations.Add(dr);
            }
        }
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.