Condividi tramite


Procedura dettagliata: Data binding semplice nel progetto di componente aggiuntivo VSTO

È possibile associare dati a controlli host e Windows Form in progetti di componente aggiuntivo VSTO. Questa procedura dettagliata illustra come aggiungere controlli a un documento di Microsoft Office Word e associare i controlli ai dati in fase di esecuzione.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti di componente aggiuntivo VSTO per Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

In questa procedura dettagliata sono illustrati i task seguenti:

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

  • Creazione di un BindingSource che connette il controllo a un'istanza di un set di dati.

  • Abilitazione dell'utente per scorrere i record e visualizzarli nel controllo.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzare l'IDE.

Prerequisiti

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

Crea un nuovo progetto

Il primo passaggio consiste nel creare un progetto di componente aggiuntivo VSTO per Word.

Per creare un nuovo progetto

  1. Creare un progetto di componente aggiuntivo VSTO di Word con il nome Popolamento di documenti da un database, usando Visual Basic o C#.

    Per altre informazioni, vedere Procedura: Creare progetti di Office in Visual Studio.

    Visual Studio apre il file ThisAddIn.vb o ThisAddIn.cs e aggiunge i documenti di popolamento da un progetto di database a Esplora soluzioni.

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

Creare un'origine dati

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

Per aggiungere un set di dati tipizzato al progetto

  1. Se la finestra Origini dati non è visibile, visualizzarla nella barra dei menu scegliendo Visualizza>altre origini dati di Windows.>

  2. Scegliere Aggiungi nuova origine dati per avviare la Configurazione guidata origine dati.

  3. Selezionare Databasee quindi scegliere Avanti.

  4. Se esiste già una connessione al database AdventureWorksLT , selezionarla e quindi scegliere Avanti.

    In caso contrario, scegliere Nuova connessionee usare la finestra di dialogo Aggiungi connessione per creare la nuova connessione. Per altre informazioni, vedere Aggiungere nuove connessioni.

  5. Nella pagina Salva stringa di connessione nel file di configurazione dell'applicazione scegliere Avanti.

  6. Nella pagina Seleziona oggetti di database espandere Tabelle e quindi selezionare la tabella Customer (SalesLT).

  7. Fare clic su Fine.

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

    • Un set di dati tipizzato denominato AdventureWorksLTDataSet. Questo set di dati rappresenta i contenuti della tabella Customer (SalesLT) nel database AdventureWorksLT.

    • TableAdapter denominato CustomerTableAdapter. Questo TableAdapter può essere usato per leggere e scrivere dati in AdventureWorksLTDataSet. Per altre informazioni, vedere Panoramica di TableAdapter.

      Si useranno entrambi gli oggetti più avanti in questa procedura dettagliata.

Creare controlli e binding di controlli ai dati

L'interfaccia per la visualizzazione dei record di database in questa procedura dettagliata è di base e viene creata direttamente all'interno del documento. Un ContentControl visualizza un solo record di database alla volta e due controlli Button consentono di scorrere avanti e indietro i record. Il controllo contenuto usa un BindingSource per connettersi al database.

Per altre informazioni sull'associazione di controlli ai dati, vedere Associare dati ai controlli nelle soluzioni Office.

Per creare l'interfaccia nel documento

  1. Nella classe ThisAddIn dichiarare i controlli seguenti per visualizzare e scorrere la tabella Customer del database AdventureWorksLTDataSet .

    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 set di dati, compilare il set di dati con le informazioni del database AdventureWorksLTDataSet .

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

    Word.Document currentDocument = this.Application.ActiveDocument;
    
    Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
  4. Definire diversi intervalli all'inizio del documento. Questi intervalli identificano dove 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:   \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 definiti in precedenza.

    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 contenuto a AdventureWorksLTDataSet usando BindingSource. Per gli sviluppatori C# aggiungere due gestori eventi per i controlli Button .

    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.

    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

Testare il componente aggiuntivo

Quando si apre Word, il controllo contenuto visualizza i dati del set di dati AdventureWorksLTDataSet . Scorrere i record del database selezionando i pulsanti Avanti e Indietro .

Per testare il componente aggiuntivo VSTO

  1. Premere F5.

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

  2. Selezionare i pulsanti Avanti e Indietro per scorrere i record del database.