Associazione di dati ai controlli

Aggiornamento: Luglio 2008

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Progetti a livello di documento

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Progetti a livello di applicazione

  • Excel 2007

  • Word 2007

Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazione.

È 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.

A partire da Visual Studio 2008 Service Pack 1 (SP1), è possibile associare dati ai controlli nei progetti a livello di applicazione. Se SP1 non è installato, i dati possono essere associati ai controlli solo in progetti a livello di documento.

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.

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 è un insieme 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. Questo esempio di codice è incluso in un esempio più ampio fornito per la proprietà DataBindings.

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", missing], "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 Cenni preliminari sulla visualizzazione dei dati e Finestra Origini dati.

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.

In Word 2007, ai documenti viene aggiunto un controllo ContentControl. Il tipo di controllo del contenuto dipende dal tipo di dati del campo selezionato. In Word 2003, ai documenti viene aggiunto un controllo Bookmark.

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:

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

Cenni preliminari sulla visualizzazione dei dati

Cenni preliminari sul salvataggio dei dati

Memorizzazione di dati nella cache

Altre risorse

Controllo della concorrenza in ADO.NET

Dati nelle soluzioni Office

Cronologia delle modifiche

Date

History

Motivo

Luglio 2008

Aggiunte informazioni sull'associazione di dati nei componenti aggiuntivi a livello di applicazione.

Modifica di funzionalità in SP1.