Actualización de un origen de datos con datos de un control host

Puede enlazar un control host a un origen de datos y actualizar el origen de datos con los cambios que se realicen en los datos del control. Hay dos pasos principales en este proceso:

  1. Actualizar el origen de datos en memoria con los datos modificados en el control. Normalmente, el origen de datos en memoria es un elemento DataSet, un elemento DataTable, u otro objeto de datos.

  2. Actualizar la base de datos con los datos modificados en el origen de datos en memoria. Esto solo es aplicable si el origen de datos está conectado a una base de datos back-end, como una base de datos de SQL Server o Microsoft Office Access.

    Para obtener más información sobre los controles de host y el enlace de datos, vea Información general sobre elementos host y Controles host y Enlace de datos a controles en soluciones de Office.

    Se aplica a: La información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Excel y Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

Actualización del origen de datos en memoria

De forma predeterminada, los controles host que habilitan el enlace de datos simple (como los controles de contenido en un documento de Word o un control de intervalo con nombre en una hoja de cálculo de Excel) no guardan los cambios de datos en el origen de datos en memoria. Es decir, cuando un usuario final cambia un valor en un control host y después se desplaza fuera del control, el nuevo valor del control no se guarda automáticamente en el origen de datos.

Para guardar los datos en el origen de datos, puede escribir código que actualice el origen de datos como respuesta a un evento concreto en tiempo de ejecución o puede configurar el control para que actualice automáticamente el origen de datos cuando el valor en el control cambie.

No es necesario guardar los cambios de ListObject en el origen de datos en memoria. Cuando se enlaza un control ListObject a los datos, el control ListObject guarda automáticamente los cambios en el origen de datos en memoria sin necesidad de código adicional.

Para actualizar el origen de datos en memoria en tiempo de ejecución

  • Llame al método WriteValue del objeto Binding que enlaza el control al origen de datos.

    En el ejemplo siguiente se guardan los cambios realizados a un control NamedRange en una hoja de cálculo de Excel en el origen de datos. En este ejemplo se supone que tiene un control NamedRange denominado namedRange1 con su propiedad Value2 enlazada a un campo de un origen de datos.

    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Actualizar automáticamente el origen de datos en memoria

También puede configurar un control para que actualice automáticamente el origen de datos en memoria. En un proyecto de nivel de documento, puede hacerlo mediante código o con el diseñador. En un proyecto de complemento de VSTO, debe usar código.

Para establecer un control que actualice automáticamente el origen de datos en memoria mediante código

  1. Utilice el modo System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged del Binding objeto que enlaza el control al origen de datos. Hay dos opciones para actualizar el origen de datos:

    • Para actualizar el origen de datos cuando se valida el control, establezca esta propiedad en System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Para actualizar el origen de datos cuando cambia el valor de la propiedad enlazada a datos del control, establezca esta propiedad en System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      Nota:

      La opción System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged no se aplica a los controles host de Word, ya que Word no ofrece notificaciones de cambio de documento ni control-cambio. Sin embargo, esta opción puede utilizarse para los controles de Windows Forms en documentos de Word.

      En el ejemplo siguiente se configura un control NamedRange que actualiza automáticamente el origen de datos cuando cambia el valor en el control. En este ejemplo se supone que tiene un control NamedRange denominado namedRange1 con su propiedad Value2 enlazada a un campo de un origen de datos.

      this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
          DataSourceUpdateMode.OnPropertyChanged;
      

Para establecer un control a fin de que actualice automáticamente el origen de datos en memoria mediante el diseñador

  1. En Visual Studio, abra el documento de Word o el libro de Excel en el diseñador.

  2. Haga clic en el control que desea que actualice automáticamente el origen de datos.

  3. En la ventana Propiedades , expanda la propiedad (DataBindings) .

  4. Junto a la propiedad (Avanzado) , haga clic en el botón de puntos suspensivos (VisualStudioEllipsesButton screenshot).

  5. En el cuadro de diálogo Formato y enlace de datos avanzado , haga clic en la lista desplegable Modo de actualización del origen de datos y seleccione uno de los siguientes valores:

    • Para actualizar el origen de datos cuando se valida el control, seleccione OnValidation.

    • Para actualizar el origen de datos cuando cambia el valor de la propiedad enlazada a datos del control, seleccione OnPropertyChanged.

      Nota:

      La opción OnPropertyChanged no se aplica a los controles host de Word porque Word no ofrece notificaciones de cambios de documento o de control. Sin embargo, esta opción puede utilizarse para los controles de Windows Forms en documentos de Word.

  6. Cierre el cuadro de diálogo Formato y enlace de datos avanzado .

Actualizar la base de datos

Si el origen de datos en memoria está asociado a una base de datos, debe actualizar la base de datos con los cambios en el origen de datos. Para obtener más información sobre cómo actualizar una base de datos, vea Guardar datos de nuevo en la base de datos y Actualizar datos mediante tableAdapter .

Para actualizar la base de datos

  1. Llame al método EndEdit del elemento BindingSource para el control.

    El elemento BindingSource se genera automáticamente cuando agrega un control enlazado a datos a un documento o un libro en tiempo de diseño. El elemento BindingSource conecta el control al conjunto de datos con tipo en el proyecto. Para obtener más información, consulte Información general sobre el componente BindingSource.

    En el siguiente ejemplo se supone que el proyecto contiene un elemento BindingSource denominado customersBindingSource.

    this.customersBindingSource.EndEdit();
    
  2. Llame al Update método del TableAdapter generado en el proyecto.

    TableAdapter se genera automáticamente cuando se agrega un control enlazado a datos a un documento o libro en tiempo de diseño. TableAdapter conecta el conjunto de datos con tipo del proyecto a la base de datos. Para obtener más información, consulte Información general sobre TableAdapter.

    En el ejemplo de código siguiente se supone que tiene una conexión a la tabla Customers de la base de datos Northwind y que el proyecto contiene un tableAdapter denominado customersTableAdapter y un conjunto de datos con tipo denominado northwindDataSet.

    this.customersTableAdapter.Update(this.northwindDataSet.Customers);