Associazione di dati ai controlli nelle soluzioni Office
È possibile associare i controlli Windows Form e i controlli host in un documento di Microsoft Office Word o in un foglio di lavoro di Microsoft Office Excel a un'origine dati in modo da visualizzare automaticamente i dati.È possibile associare dati ai controlli nei progetti a livello di applicazione e a livello di documento.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Office 2013 e Office 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
I controlli host consentono di estendere gli oggetti contenuti nei modelli a oggetti di Word ed Excel, ad esempio i controlli del contenuto in Word e gli intervalli denominati in Excel.Per ulteriori informazioni, vedere Cenni preliminari sugli elementi e sui controlli host.
I controlli Windows Form e i controlli host utilizzano il modello di associazione dati di Windows Form, che supporta sia l'associazione dati semplice, sia l'associazione dati complessa a origini dati quali dataset e tabelle dati.Per informazioni esaustive sul modello di associazione dati in Windows Form, vedere Associazione dati e Windows Form.
Per una dimostrazione video correlata, vedere How Do I: Consume Database Data in Excel? (la pagina potrebbe essere in inglese).
Associazione dati semplice
L'associazione dati semplice si verifica quando una proprietà di un controllo viene associata a un singolo elemento di dati, come un valore di una tabella dati.Ad esempio, il controllo NamedRange dispone di una proprietà Value2 che è possibile associare a un campo di un DataSet.Quando il campo all'interno del dataset viene modificato, il valore nell'intervallo denominato viene corretto di conseguenza.Tutti i controlli host, a eccezione di XMLNodes, supportano l'associazione dati semplice.Il controllo XMLNodes è una raccolta e quindi non supporta l'associazione dati.
Per eseguire un'associazione dati semplice a un controllo host, aggiungere un oggetto Binding alla proprietà DataBindings del controllo.Un oggetto Binding rappresenta l'associazione semplice tra il valore di una proprietà del controllo e il valore di un elemento di dati.
Nell'esempio di codice riportato di seguito viene illustrato come associare la proprietà Value2 a un elemento di dati in un progetto a livello di documento.
Dim binding1 As New Binding("Value2", ds, "Customers.Names", True)
namedRange1.DataBindings.Add(binding1)
Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);
Per procedure dettagliate in cui venga illustrata l'associazione dati semplice, vedere Procedura dettagliata: associazione dati semplice in un progetto a livello di documento per un progetto a livello di documento e Procedura dettagliata: associazione dati semplice in un progetto a livello di applicazione per un progetto a livello di applicazione.
Associazione dati complessa
L'associazione dati complessa si verifica quando una proprietà di un controllo viene associata a più elementi di dati, ad esempio una serie di colonne di una tabella dati.Il controllo ListObject per Excel è l'unico controllo host che supporta l'associazione dati complessa.Questa è supportata inoltre da numerosi controlli Windows Form, ad esempio il controllo DataGridView.
Per eseguire un'associazione dati complessa, impostare la proprietà DataSource del controllo su un oggetto origine dati supportato dall'associazione dati complessa.Ad esempio, la proprietà DataSource del controllo ListObject può essere associata a più colonne di una tabella dati.Tutti i dati della tabella sono presenti nel controllo ListObject e, quando vengono modificati, viene modificato anche il controllo ListObject.Per un elenco delle origini dati che è possibile utilizzare per l'associazione dati complessa, vedere Origini dati supportate da Windows Form.
Nell'esempio di codice riportato di seguito viene creato un oggetto DataSet con due oggetti DataTable e una delle tabelle viene compilata con dati.Il codice associa quindi ListObject alla tabella che contiene i dati.Questo esempio è valido per un progetto a livello di documento di Excel.
Private Sub ListObject_DataSourceAndMember()
' Create a DataSet and two DataTables.
Dim ordersDataSet As New DataSet("ordersDataSet")
Dim tableCustomers As New DataTable("Customers")
Dim tableProducts As New DataTable("Products")
ordersDataSet.Tables.Add(tableCustomers)
ordersDataSet.Tables.Add(tableProducts)
' Add a data to the Customers DataTable.
tableCustomers.Columns.Add(New DataColumn("LastName"))
tableCustomers.Columns.Add(New DataColumn("FirstName"))
Dim dr As DataRow = tableCustomers.NewRow()
dr("LastName") = "Chan"
dr("FirstName") = "Gareth"
tableCustomers.Rows.Add(dr)
' Create a list object.
Dim List1 As Microsoft.Office.Tools.Excel.ListObject = _
Me.Controls.AddListObject(Me.Range( _
"A1"), "Customers")
' Bind the list object to the Customers table.
List1.AutoSetDataBoundColumnHeaders = True
List1.DataSource = ordersDataSet
List1.DataMember = "Customers"
End Sub
private void ListObject_DataSourceAndMember()
{
// Create a DataSet and two DataTables.
DataSet ordersDataSet = new DataSet("ordersDataSet");
DataTable tableCustomers = new DataTable("Customers");
DataTable tableProducts = new DataTable("Products");
ordersDataSet.Tables.Add(tableCustomers);
ordersDataSet.Tables.Add(tableProducts);
// Add a data to the Customers DataTable.
tableCustomers.Columns.Add(new DataColumn("LastName"));
tableCustomers.Columns.Add(new DataColumn("FirstName"));
DataRow dr = tableCustomers.NewRow();
dr["LastName"] = "Chan";
dr["FirstName"] = "Gareth";
tableCustomers.Rows.Add(dr);
// Create a list object.
Microsoft.Office.Tools.Excel.ListObject list1 =
this.Controls.AddListObject(
this.Range["A1"], "Customers");
// Bind the list object to the Customers table.
list1.AutoSetDataBoundColumnHeaders = true;
list1.DataSource = ordersDataSet;
list1.DataMember = "Customers";
}
Per procedure dettagliate in cui venga illustrata l'associazione dati complessa, vedere Procedura dettagliata: associazione dati complessa in un progetto a livello di documento per un progetto a livello di documento e Procedura dettagliata: associazione dati complessa in un progetto a livello di applicazione per un progetto a livello di applicazione.
Visualizzazione dei dati in documenti e cartelle di lavoro
Nei progetti a livello di documento, è possibile utilizzare la finestra Origini dati per aggiungere facilmente controlli associati a dati ai documenti o alle cartelle di lavoro mediante una procedura analoga a quella utilizzata per i Windows Form.Per ulteriori informazioni sull'utilizzo della finestra Origini dati, vedere Associazione di controlli Windows Form ai dati in Visual Studio e Origini dati (finestra).
Trascinamento dei controlli dalla finestra Origini dati
Nel documento viene creato un controllo quando vi si trascina un oggetto dalla finestra Origini dati.Il tipo di controllo creato varia a seconda che venga associata una sola o più colonne di dati.
In Excel, nel foglio di lavoro viene creato un controllo NamedRange per ogni campo singolo e un controllo ListObject per ogni intervallo di dati che includa più righe e colonne.Questa impostazione predefinita può essere modificata selezionando la tabella o il campo nella finestra Origini dati e scegliendo un controllo diverso dall'elenco a discesa.
Viene aggiunto un controllo ContentControl ai documenti.Il tipo di controllo del contenuto dipende dal tipo di dati del campo selezionato.
Associazione di dati in progetti a livello di documento in fase di progettazione
Negli argomenti seguenti vengono mostrati esempi di associazione di dati in fase di progettazione:
Associazione di dati in progetti a livello di applicazione
Nei progetti a livello di applicazione è possibile aggiungere controlli solo in fase di esecuzione.Negli argomenti seguenti vengono mostrati esempi di associazione di dati in fase di esecuzione:
Procedura dettagliata: associazione dati semplice in un progetto a livello di applicazione
Procedura dettagliata: associazione dati complessa in un progetto a livello di applicazione
Aggiornamento di dati associati a controlli host
L'associazione dati tra un'origine dati e un controllo host implica un aggiornamento bidirezionale dei dati.In un'associazione dati semplice, le modifiche apportate all'origine dati si riflettono automaticamente nel controllo host, mentre quelle apportate al controllo host richiedono una chiamata esplicita per aggiornare l'origine dati.Il motivo è che in alcuni casi le modifiche apportate a un campo con associazione dati non vengono accettate finché non sono accompagnate da modifiche a un altro campo con associazione dati.Si considerino, ad esempio, due campi, uno relativo all'età e un altro relativo agli anni di esperienza.L'esperienza non può superare l'età.Non è possibile aggiornare l'età da 50 a 25 e poi l'esperienza da 30 a 10 se non vengono apportate modifiche contemporaneamente ai due campi.Per risolvere il problema, i campi con associazione dati semplice non vengono aggiornati finché gli aggiornamenti non vengono inviati in maniera esplicita dal codice.
Per aggiornare un'origine dati da controlli host che consentono l'associazione dati semplice, è necessario inviare gli aggiornamenti all'origine dati in memoria (ad esempio un oggetto DataSet o DataTable) e al database back-end, se utilizzato.
Non è necessario aggiornare in modo esplicito l'origine dati in memoria quando si esegue un'associazione dati complessa mediante il controllo ListObject.In tal caso, le modifiche vengono inviate automaticamente all'origine dati in memoria senza codice aggiuntivo.
Per ulteriori informazioni, vedere Procedura: aggiornare un'origine dati con i dati inviati da un controllo host.
Vedere anche
Attività
Procedura: creare un controllo con associazione semplice in un Windows Form
Procedura: aggiornare i dati mediante un TableAdapter
Concetti
Associazione dati e Windows Form
Associazione di controlli Windows Form ai dati in Visual Studio
Salvataggio dei dati nei dataset
Memorizzazione di dati nella cache
Altre risorse
Ricerca di categorie: Utilizzare dati del database in Excel?