Procedura dettagliata: Associare dati ai controlli in un riquadro azioni di Word

Questa procedura dettagliata illustra il data binding ai controlli in un riquadro azioni in Word. I controlli mostrano una relazione master/detail tra le tabelle in un database SQL Server.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento 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:

  • Creazione di un riquadro azioni con controlli Windows Form associati ai dati.

  • Uso di una relazione master/dettaglio per visualizzare i dati nei controlli.

  • Visualizzare il riquadro azioni all'apertura dell'applicazione.

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 di Visual Studio.

Prerequisiti

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

  • Una versione di Visual Studio che include Microsoft Office Developer Tools. Per altre informazioni, vedere Configurare un computer per sviluppare soluzioni Office.

  • Word 2013 o Word 2010 .

  • Accesso a un server con il database di esempio northwind di SQL Server.

  • Autorizzazioni per la lettura e la scrittura nel database di SQL Server.

Creare il progetto

Il primo passaggio consiste nel creare un progetto Documento di Word.

Per creare un nuovo progetto

  1. Creare un progetto di documento di Word con il nome My Word Actions Pane.Create a Word Document project with the name My Word Actions Pane. Nella procedura guidata selezionare Crea un nuovo documento.

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

    Visual Studio apre il nuovo documento di Word nella finestra di progettazione e aggiunge il progetto Riquadro azioni personali a Esplora soluzioni.

Aggiungere controlli al riquadro azioni

Per questa procedura dettagliata, è necessario un controllo riquadro azioni che contiene controlli Windows Form associati a dati. Aggiungere un'origine dati al progetto e quindi trascinare i controlli dalla finestra Origini dati al controllo riquadro azioni.

Per aggiungere un controllo riquadro azioni

  1. Selezionare il progetto Riquadro azioni personali in Esplora soluzioni.

  2. Dal menu Progetto fare clic su Aggiungi nuovo elemento.

  3. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Controllo riquadro azioni, denominarlo ActionsControl e quindi fare clic su Aggiungi.

Per aggiungere un'origine dati al progetto

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

    Nota

    Se Mostra origini dati non è disponibile, fare clic sul documento di Word e quindi selezionare di nuovo.

  2. Fare clic su Aggiungi nuova origine dati per avviare la Configurazione guidata origine dati.

  3. Selezionare Database e quindi fare clic su Avanti.

  4. Selezionare una connessione dati al database di SQL Server di esempio Northwind oppure aggiungere una nuova connessione usando il pulsante Nuovo Connessione ion.

  5. Fare clic su Avanti.

  6. Deselezionare l'opzione per salvare la connessione, se selezionata, quindi fare clic su Avanti.

  7. Espandere il nodo Tabelle nella finestra Oggetti database.

  8. Selezionare la casella di controllo accanto alle tabelle Suppliers and Products .

  9. Fare clic su Fine.

    La procedura guidata aggiunge la tabella Suppliers e La tabella Products alla finestra Origini dati. Aggiunge anche un set di dati tipizzato al progetto visibile in Esplora soluzioni.

Per aggiungere controlli Windows Form associati a dati a un controllo riquadro azioni

  1. Nella finestra Origini dati espandere la tabella Suppliers.

  2. Fare clic sulla freccia a discesa nel nodo Nome società e selezionare ComboBox.

  3. Trascinare CompanyName dalla finestra Origini dati al controllo riquadro azioni.

    Viene creato un ComboBox controllo nel controllo riquadro azioni. Allo stesso tempo, un BindingSource oggetto denominato SuppliersBindingSource, un adattatore di tabella e un DataSet oggetto vengono aggiunti al progetto nella barra dei componenti.

  4. Selezionare SuppliersBindingNavigator nella barra dei componenti e premere Canc. In questa procedura dettagliata non verrà usato .SuppliersBindingNavigator

    Nota

    L'eliminazione SuppliersBindingNavigator di non rimuove tutto il codice generato per esso. È possibile rimuovere questo codice.

  5. Spostare la casella combinata in modo che si trova sotto l'etichetta e modificare la proprietà Size su 171, 21.

  6. Nella finestra Origini dati espandere la tabella Products figlio della tabella Suppliers.

  7. Fare clic sulla freccia a discesa nel nodo ProductName e selezionare ListBox.

  8. Trascinare ProductName nel controllo riquadro azioni.

    Viene creato un ListBox controllo nel controllo riquadro azioni. Allo stesso tempo, un BindingSource adattatore di tabella denominato ProductBindingSource e un adattatore di tabella vengono aggiunti al progetto nella barra dei componenti.

  9. Spostare la casella di riepilogo in modo che si trova sotto l'etichetta e modificare la proprietà Size su 171.95.

  10. Trascinare un Button oggetto dalla casella degli strumenti nel controllo riquadro azioni e posizionarlo sotto la casella di riepilogo.

  11. Fare clic con il pulsante destro del Buttonmouse su Proprietà dal menu di scelta rapida e modificare le proprietà seguenti.

    Proprietà valore
    Nome Inserimento
    Text Inserimento
  12. Ridimensionare il controllo utente in base ai controlli.

Configurare l'origine dati

Per configurare l'origine dati, aggiungere codice all'evento Load del controllo riquadro azioni per riempire il controllo con i dati di DataTablee impostare le DataSource proprietà e DataMember per ogni controllo.

Per caricare il controllo con i dati

  1. Load Nel gestore eventi della ActionsControl classe aggiungere il codice seguente.

    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
        this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }
    
  2. In C# è necessario collegare il gestore eventi all'evento Load . È possibile inserire questo codice nel ActionsControl costruttore, dopo la chiamata a InitializeComponent. Per altre informazioni su come creare gestori eventi, vedere Procedura: Creare gestori eventi nei progetti di Office.

    this.Load += new EventHandler(ActionsControl_Load);
    

Per impostare le proprietà di data binding dei controlli

  1. Selezionare il controllo CompanyNameComboBox.

  2. Nella finestra Proprietà fare clic sul pulsante a destra della proprietà DataSource e selezionare suppliersBindingSource.

  3. Fare clic sul pulsante a destra della proprietà DisplayMember e selezionare CompanyName.

  4. Espandere la proprietà DataBindings, fare clic sul pulsante a destra della proprietà Text e selezionare Nessuno.

  5. Selezionare il controllo ProductNameListBox.

  6. Nella finestra Proprietà fare clic sul pulsante a destra della proprietà DataSource e selezionare productsBindingSource.

  7. Fare clic sul pulsante a destra della proprietà DisplayMember e selezionare ProductName.

  8. Espandere la proprietà DataBindings, fare clic sul pulsante a destra della proprietà SelectedValue e selezionare Nessuno.

Aggiungere un metodo per inserire dati in una tabella

L'attività successiva consiste nel leggere i dati dai controlli associati e popolare una tabella nel documento di Word. Creare prima di tutto una routine per formattare le intestazioni nella tabella e quindi aggiungere il AddData metodo per creare e formattare una tabella di Word.

Per formattare le intestazioni di tabella

  1. ActionsControl Nella classe creare un metodo per formattare le intestazioni della tabella.

    static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text)
    {
        tblCell.Range.Text = text;
        tblCell.Range.Font.Bold = 1;
        tblCell.Range.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    }
    

Per creare la tabella

  1. ActionsControl Nella classe scrivere un metodo che creerà una tabella se non ne esiste già una e aggiungere dati dal riquadro azioni alla tabella.

    private void AddData(System.Data.DataRow row, string companyName)
    {
        object missing = System.Type.Missing;
    
        // Create a table if it doesn't already exist.
        if (Globals.ThisDocument.Tables.Count == 0)
        {
            try
            {
                // Create a table.
                Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add
                    (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing);
    
                // Insert headings.
                SetHeadings(tbl.Cell(1, 1), "Company Name");
                SetHeadings(tbl.Cell(1, 2), "Product Name");
                SetHeadings(tbl.Cell(1, 3), "Quantity");
                SetHeadings(tbl.Cell(1, 4), "Unit Price");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem creating Products table: " + ex.Message, 
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    
        // Add data from data row to the table.
        Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection;
    
        if (selection.Tables.Count > 0)
        {
            Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing);
    
            newRow.Range.Font.Bold = 0;
    
            newRow.Range.ParagraphFormat.Alignment = 
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
    
            newRow.Cells[4].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
    
            newRow.Cells[1].Range.Text = companyName;
            newRow.Cells[2].Range.Text = row["ProductName"].ToString();
            newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString();
            newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00");
        }
        else
        {
            MessageBox.Show("Cursor must be within a table.", 
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    

Per inserire testo in una tabella di Word

  1. Aggiungere il codice seguente al Click gestore eventi del pulsante Inserisci .

    private void Insert_Click(object sender, System.EventArgs e)
    {
        System.Data.DataTable tbl = northwindDataSet.Products;
        System.Data.DataRow[] rows;
    
        // Check if a product is selected.
        if (this.productNameListBox.SelectedIndex >= 0)
        {
            System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem;
    
            string product = productRow.Row["ProductName"].ToString();
            string company = this.companyNameComboBox.Text;
    
            // Return the data row from the selected product.
            rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'");
    
            this.AddData(rows[0], company);
        }
        else
        {
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK);
        }
    }
    
  2. In C# è necessario creare un gestore eventi per l'evento Click del pulsante. È possibile inserire questo codice nel Load gestore eventi della ActionsControl classe .

    this.Insert.Click += new EventHandler(Insert_Click);
    

Visualizzare il riquadro azioni

Il riquadro azioni diventa visibile dopo l'aggiunta dei controlli.

Per visualizzare il riquadro azioni

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su ThisDocument.vb o ThisDocument.cs, quindi scegliere Visualizza codice dal menu di scelta rapida.

  2. Creare una nuova istanza del controllo nella parte superiore della ThisDocument classe in modo che abbia un aspetto simile all'esempio seguente.

    private ActionsControl actions = new ActionsControl();
    
  3. Aggiungere codice al Startup gestore eventi di ThisDocument in modo che abbia un aspetto simile all'esempio seguente.

    this.ActionsPane.Controls.Add(actions);
    

Testare l'applicazione

È ora possibile testare il documento per verificare che il riquadro azioni venga visualizzato all'apertura del documento. Verificare la relazione master/dettaglio nei controlli nel riquadro azioni e assicurarsi che i dati vengano popolati in una tabella di Word quando si fa clic sul pulsante Inserisci .

Per testare il documento

  1. Premere F5 per eseguire il progetto.

  2. Verificare che il riquadro azioni sia visibile.

  3. Selezionare un'azienda nella casella combinata e verificare che gli elementi nella casella di riepilogo Prodotti cambino.

  4. Selezionare un prodotto, fare clic su Inserisci nel riquadro azioni e verificare che i dettagli del prodotto vengano aggiunti alla tabella in Word.

  5. Inserire prodotti aggiuntivi di varie aziende.

Passaggi successivi

Questa procedura dettagliata illustra le nozioni di base sull'associazione dei dati ai controlli in un riquadro azioni in Word. Ecco alcune possibili attività successive: