Udostępnij za pośrednictwem


Aktualizowanie źródła danych przy użyciu danych z kontrolki hosta

Kontrolkę hosta można powiązać ze źródłem danych i zaktualizować źródło danych za pomocą zmian wprowadzonych w kontrolce. Ten proces obejmuje dwa główne kroki:

  1. Zaktualizuj źródło danych w pamięci przy użyciu zmodyfikowanych danych w kontrolce. Zazwyczaj źródłem danych w pamięci jest , lub innym obiektem DataSetDataTabledanych.

  2. Zaktualizuj bazę danych przy użyciu zmienionych danych w źródle danych w pamięci. Ma to zastosowanie tylko wtedy, gdy źródło danych jest połączone z bazą danych zaplecza, taką jak program SQL Server lub baza danych programu Microsoft Office Access.

    Aby uzyskać więcej informacji na temat kontrolek hosta i powiązania danych, zobacz Omówienie elementów hosta i kontrolek hostów oraz Wiązanie danych z kontrolkami w rozwiązaniach pakietu Office.

    Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programów Excel i Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Aktualizowanie źródła danych w pamięci

Domyślnie kontrolki hosta, które umożliwiają proste powiązanie danych (takie jak kontrolki zawartości w dokumencie programu Word lub nazwanej kontrolce zakresu w arkuszu programu Excel) nie zapisują zmian danych w źródle danych w pamięci. Oznacza to, że gdy użytkownik końcowy zmienia wartość w kontrolce hosta, a następnie przechodzi z dala od kontrolki, nowa wartość w kontrolce nie jest automatycznie zapisywana w źródle danych.

Aby zapisać dane w źródle danych, możesz napisać kod, który aktualizuje źródło danych w odpowiedzi na określone zdarzenie w czasie wykonywania, lub można skonfigurować kontrolkę tak, aby automatycznie aktualizowała źródło danych po zmianie wartości kontrolki.

Nie trzeba zapisywać ListObject zmian w źródle danych w pamięci. Po powiązaniu kontrolki ListObject z danymi kontrolka ListObject automatycznie zapisuje zmiany w źródle danych w pamięci bez konieczności dodatkowego kodu.

Aby zaktualizować źródło danych w pamięci w czasie wykonywania

  • Wywołaj metodę WriteValueBinding obiektu, który wiąże kontrolkę ze źródłem danych.

    Poniższy przykład zapisuje zmiany wprowadzone w NamedRange kontrolce w arkuszu programu Excel w źródle danych. W tym przykładzie przyjęto założenie, że masz kontrolkę NamedRange o nazwie namedRange1 z jej Value2 właściwością powiązaną z polem w źródle danych.

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

Automatyczne aktualizowanie źródła danych w pamięci

Można również skonfigurować kontrolkę tak, aby automatycznie aktualizowała źródło danych w pamięci. W projekcie na poziomie dokumentu można to zrobić przy użyciu kodu lub projektanta. W projekcie dodatku VSTO należy użyć kodu.

Aby ustawić kontrolkę w celu automatycznego aktualizowania źródła danych w pamięci przy użyciu kodu

  1. Użyj trybu Binding System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged obiektu, który wiąże kontrolkę ze źródłem danych. Istnieją dwie opcje aktualizowania źródła danych:

    • Aby zaktualizować źródło danych po zweryfikowaniu kontrolki, ustaw tę właściwość na Wartość System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Aby zaktualizować źródło danych, gdy wartość właściwości powiązanej z danymi kontrolki zmienia się, ustaw tę właściwość na System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      Uwaga

      Opcja System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged nie ma zastosowania do kontrolek hosta programu Word, ponieważ program Word nie oferuje powiadomień o zmianie dokumentu ani zmianie kontrolki. Tę opcję można jednak użyć w przypadku kontrolek Windows Forms w dokumentach programu Word.

      Poniższy przykład konfiguruje kontrolkę NamedRange tak, aby automatycznie aktualizowała źródło danych, gdy wartość w kontrolce ulegnie zmianie. W tym przykładzie przyjęto założenie, że masz kontrolkę NamedRange o nazwie namedRange1 z jej Value2 właściwością powiązaną z polem w źródle danych.

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

Aby ustawić kontrolkę, aby automatycznie zaktualizować źródło danych w pamięci przy użyciu projektanta

  1. W programie Visual Studio otwórz dokument programu Word lub skoroszyt programu Excel w projektancie.

  2. Kliknij kontrolkę, którą chcesz automatycznie zaktualizować źródło danych.

  3. W oknie Właściwości rozwiń właściwość (DataBindings).

  4. Obok właściwości (Zaawansowane) kliknij przycisk wielokropka (VisualStudioEllipsesButton screenshot).

  5. W oknie dialogowym Formatowanie i powiązanie zaawansowane kliknij listę rozwijaną Tryb aktualizacji źródła danych i wybierz jedną z następujących wartości:

    • Aby zaktualizować źródło danych po zweryfikowaniu kontrolki, wybierz pozycję OnValidation.

    • Aby zaktualizować źródło danych, gdy wartość właściwości powiązanej z danymi kontrolki ulegnie zmianie, wybierz pozycję OnPropertyChanged.

      Uwaga

      Opcja OnPropertyChanged nie ma zastosowania do kontrolek hosta programu Word, ponieważ program Word nie oferuje powiadomień o zmianie dokumentu ani zmianie kontroli. Tę opcję można jednak użyć w przypadku kontrolek Windows Forms w dokumentach programu Word.

  6. Zamknij okno dialogowe Formatowanie i powiązanie zaawansowane.

Aktualizowanie bazy danych

Jeśli źródło danych w pamięci jest skojarzone z bazą danych, musisz zaktualizować bazę danych przy użyciu zmian w źródle danych. Aby uzyskać więcej informacji na temat aktualizowania bazy danych, zobacz Zapisywanie danych z powrotem w bazie danych i Aktualizowanie danych przy użyciu elementu TableAdapter .

Aby zaktualizować bazę danych

  1. Wywołaj metodę EndEdit kontrolki BindingSource .

    Element BindingSource jest generowany automatycznie podczas dodawania kontrolki powiązanej z danymi do dokumentu lub skoroszytu w czasie projektowania. Kontrolka BindingSource łączy kontrolkę z wpisanym zestawem danych w projekcie. Aby uzyskać więcej informacji, zobacz BindingSource component overview (Omówienie składnika BindingSource).

    W poniższym przykładzie kodu przyjęto założenie, że projekt zawiera BindingSource nazwę customersBindingSource.

    this.customersBindingSource.EndEdit();
    
  2. Wywołaj metodę Update wygenerowanego obiektu TableAdapter w projekcie.

    Kontrolka TableAdapter jest generowana automatycznie podczas dodawania kontrolki powiązanej z danymi do dokumentu lub skoroszytu w czasie projektowania. Narzędzie TableAdapter łączy typowy zestaw danych w projekcie z bazą danych. Aby uzyskać więcej informacji, zobacz Omówienie funkcji TableAdapter.

    W poniższym przykładzie kodu przyjęto założenie, że masz połączenie z tabelą Customers w bazie danych Northwind i że projekt zawiera tabelę TableAdapter o nazwie customersTableAdapter i typowany zestaw danych o nazwie northwindDataSet.

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