Condividi tramite


Procedura dettagliata: associazione dati semplice in un progetto a livello di applicazione

È possibile associare dati ai controlli host e ai controlli Windows Form nei progetti a livello di applicazione. In questa procedura dettagliata viene illustrato come aggiungere controlli a un documento di Microsoft Office Word e come associare in fase di esecuzione i controlli ai dati.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di applicazione per Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Vengono illustrate le attività seguenti:

  • Aggiunta di ContentControl a un documento in fase di esecuzione.

  • Creazione di un oggetto BindingSource che connette il controllo a un'istanza di un dataset.

  • Attivazione per scorrere i record e visualizzarli nel controllo.

Nota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

-

Una versione di Visual Studio 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).

Creazione di un nuovo progetto

Il primo passaggio consiste nella creazione di un progetto componente aggiuntivo per Word.

Per creare un nuovo progetto

  1. Creare un progetto componente aggiuntivo denominato Popolamento di documenti da un database utilizzando Visual Basic o C#.

    Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.

    In Visual Studio viene aperto il file ThisAddIn.vb o ThisAddIn.cs e il progetto Popolamento di documenti da un database viene aggiunto a Esplora soluzioni.

  2. Se il progetto è destinato a .NET Framework 4, aggiungere un riferimento all'assembly Microsoft.Office.Tools.Word.v4.0.Utilities.dll. Tale riferimento è necessario per aggiungere a livello di codice controlli Windows Form al documento più avanti nella procedura dettagliata.

Creazione di un'origine dati

Utilizzare la finestra Origini dati per aggiungere un DataSet tipizzato al progetto.

Per aggiungere un dataset tipizzato al progetto

  1. Scegliere Aggiungi nuova origine dati dal menu Dati.

    Verrà avviata la Configurazione guidata origine dati.

  2. Fare clic su Database, quindi scegliere Avanti.

  3. Se già si dispone di una connessione al database AdventureWorksLT, scegliere questa connessione e fare clic su Avanti.

    In caso contrario, scegliere Nuova connessione e utilizzare la finestra di dialogo Aggiungi connessione per creare la nuova connessione. Per ulteriori informazioni, vedere Procedura: connettersi ai dati di un database.

  4. Scegliere Avanti nella pagina Salva stringa di connessione nel file di configurazione dell'applicazione.

  5. Nella pagina Seleziona oggetti di database, espandere Tabelle e selezionare Customer (SalesLT).

  6. Scegliere Fine.

    Il file AdventureWorksLTDataSet.xsd viene aggiunto a Esplora soluzioni. Tale file definisce gli elementi seguenti:

    • Un dataset tipizzato denominato AdventureWorksLTDataSet. Questo dataset rappresenta il contenuto della tabella Customer (SalesLT) nel database AdventureWorksLT.

    • Un oggetto TableAdapter denominato CustomerTableAdapter. È possibile utilizzare questo oggetto TableAdapter per leggere e scrivere dati in AdventureWorksLTDataSet. Per ulteriori informazioni, vedere Cenni preliminari sugli oggetti TableAdapter.

    Nei passaggi successivi della procedura dettagliata si utilizzeranno entrambi gli oggetti.

Creazione di controlli e associazione dei controlli ai dati

L'interfaccia per la visualizzazione dei record di database in questa procedura dettagliata è molto semplice e viene creata direttamente all'interno del documento. In un oggetto ContentControl viene visualizzato un solo record di database per volta, mentre due controlli Button consentono di spostarsi avanti e indietro attraverso i record. Il controllo del contenuto utilizza un oggetto BindingSource per il collegamento al database.

Per ulteriori informazioni sull'associazione dei controlli ai dati, vedere Associazione di dati ai controlli nelle soluzioni Office.

Per creare l'interfaccia nel documento

  1. Nella classe ThisAddIn, dichiarare i controlli indicati di seguito per visualizzare e scorrere la tabella Customer del database AdventureWorksLTDataSet.

    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private customerTableAdapter As AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter
    Private customerBindingSource As System.Windows.Forms.BindingSource
    Private customerContentControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Private WithEvents button1 As Microsoft.Office.Tools.Word.Controls.Button
    Private WithEvents button2 As Microsoft.Office.Tools.Word.Controls.Button
    
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter;
    private System.Windows.Forms.BindingSource customerBindingSource;
    private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl;
    private Microsoft.Office.Tools.Word.Controls.Button button1;
    private Microsoft.Office.Tools.Word.Controls.Button button2;
    
  2. Nel metodo ThisAddIn_Startup, aggiungere il codice seguente per inizializzare il dataset e inserirvi le informazioni contenute nel database AdventureWorksLTDataSet.

    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.customerTableAdapter = New AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter()
    Me.customerTableAdapter.Fill(Me.adventureWorksDataSet.Customer)
    Me.customerBindingSource = New System.Windows.Forms.BindingSource()
    
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.customerTableAdapter = new AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter();
    this.customerTableAdapter.Fill(this.adventureWorksDataSet.Customer);
    this.customerBindingSource = new System.Windows.Forms.BindingSource();
    
  3. Aggiungere al metodo ThisAddIn_Startup il seguente codice. Viene generato un elemento host che estende il documento. Per ulteriori informazioni, vedere Estensione in fase di esecuzione di documenti di Word e di cartelle di lavoro di Excel in componenti aggiuntivi a livello di applicazione.

    Dim currentDocument As Word.Document = Me.Application.ActiveDocument
    
    ' Use the following line of code in projects that target the .NET Framework 4.
    Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
    ' In projects that target the .NET Framework 3.5, use the following line of code instead.
    ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
    Word.Document currentDocument = this.Application.ActiveDocument;
    
    // Use the following line of code in projects that target the .NET Framework 4.
    Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
    // In projects that target the .NET Framework 3.5, use the following line of code instead.
    // Document extendedDocument = currentDocument.GetVstoObject();
    
  4. Definire diversi intervalli all'inizio del documento. Tali intervalli identificano il punto in cui inserire il testo e posizionare i controlli.

    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.InsertParagraphBefore()
    extendedDocument.Paragraphs(1).Range.Text = "The companies listed in the AdventureWorksLT database:   "
    extendedDocument.Paragraphs(2).Range.Text = "  "
    
    Dim range1 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.First
    Dim range2 As Word.Range = extendedDocument.Paragraphs(2).Range.Characters.Last
    Dim range3 As Word.Range = extendedDocument.Paragraphs(1).Range.Characters.Last
    
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.Text = 
        "The companies listed in the AdventureWorksLT database:   \n";
    extendedDocument.Paragraphs[2].Range.Text = "  "; 
    
    Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First;
    Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last;
    Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
    
  5. Aggiungere i controlli dell'interfaccia agli intervalli precedentemente definiti.

    Me.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1")
    Me.button1.Text = "Previous"
    Me.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2")
    Me.button2.Text = "Next"
    
    Me.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(range3, _
        "richTextContentControl1")
    
    this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1");
    this.button1.Text = "Previous";
    this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2");
    this.button2.Text = "Next";
    
    this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(
        range3, "richTextContentControl1");
    
  6. Associare il controllo del contenuto all'oggetto AdventureWorksLTDataSet tramite BindingSource. Gli sviluppatori C# devono aggiungere due gestori eventi per i controlli Button.

    Me.customerBindingSource.DataSource = Me.adventureWorksDataSet.Customer
    Me.customerContentControl.DataBindings.Add("Text", Me.customerBindingSource, _
        "CompanyName", True, Me.customerContentControl.DataBindings.DefaultDataSourceUpdateMode)
    
    this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer;
    this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, 
        "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode);
    
    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    
  7. Aggiungere il codice seguente per spostarsi tra i record del database.

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click
        Me.customerBindingSource.MovePrevious()
    End Sub
    
    Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button2.Click
        Me.customerBindingSource.MoveNext()
    End Sub
    
    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

Test del componente aggiuntivo

Quando si apre Word, nel controllo del contenuto vengono visualizzati i dati del dataset AdventureWorksLTDataSet. Scorrere i record del database facendo clic sui pulsanti Avanti e Indietro.

Per verificare il componente aggiuntivo

  1. Premere F5.

    Viene creato un controllo del contenuto denominato customerContentControl che viene popolato con i dati. Contemporaneamente, al progetto vengono aggiunti un oggetto dataset denominato adventureWorksLTDataSet e un oggetto BindingSource denominato customerBindingSource. ContentControl viene associato all'oggetto BindingSource, che a sua volta è associato all'oggetto dataset.

  2. Fare clic sui pulsanti Avanti e Indietro per scorrere i record del database.

Vedere anche

Attività

Procedura: popolare fogli di lavoro con dati da un database

Procedura: popolare documenti con dati da un database

Procedura: compilare documenti con dati forniti da servizi

Procedura: compilare documenti con dati da oggetti

Procedura: scorrere i record di un database in un foglio di lavoro

Procedura: aggiornare un'origine dati con i dati inviati da un controllo host

Procedura dettagliata: associazione dati semplice in un progetto a livello di documento

Procedura dettagliata: associazione dati complessa in un progetto a livello di documento

Procedura: compilare documenti con dati da oggetti

Procedura: aggiornare un'origine dati con i dati inviati da un controllo host

Riferimenti

Cenni preliminari sul componente BindingSource

Concetti

Cenni preliminari sull'utilizzo di file di un database locale nelle soluzioni Office

Cenni preliminari sulle origini dati

Associazione di controlli Windows Form ai dati in Visual Studio

Cenni preliminari sull'utilizzo di file di un database locale nelle soluzioni Office

Connessione ai dati nelle applicazioni Windows Form

Altre risorse

Dati nelle soluzioni Office

Associazione di dati ai controlli nelle soluzioni Office