Sdílet prostřednictvím


Vytvoření vazby dat k ovládacím prvkům v řešeních Office

Ovládací prvky model Windows Forms a hostitelské ovládací prvky můžete svázat na systém Microsoft Office wordovém dokumentu nebo systém Microsoft Office excelovém listu se zdrojem dat, aby ovládací prvky automaticky zobrazovaly data. Data můžete svázat s ovládacími prvky v projektech na úrovni aplikace i na úrovni dokumentů.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu a projekty doplňků VSTO. Viz Funkce dostupné podle typu aplikace Office lication a projektu.

Ovládací prvky hostitele rozšiřují objekty, které jsou v modelech objektů Wordu a Excelu, například ovládací prvky obsahu ve Wordu a pojmenované oblasti v Excelu. Další informace najdete v tématu Přehled položek hostitele a ovládacích prvků hostitele.

Ovládací prvky model Windows Forms i hostitelů používají model datové vazby model Windows Forms, který podporuje jednoduchou datovou vazbu i složitou datovou vazbu ke zdrojům dat, jako jsou datové sady a tabulky dat. Úplné informace o modelu datové vazby v model Windows Forms najdete v tématu Datová vazba a model Windows Forms.

Jednoduchá datová vazba

Jednoduchá datová vazba existuje, pokud je vlastnost ovládacího prvku svázaná s jedním datovým prvkem, například hodnotou v tabulce dat. Například NamedRange ovládací prvek má Value2 vlastnost, která může být vázána na pole v datové sadě. Když se pole v datové sadě změní, změní se také hodnota v pojmenované oblasti. Všechny hostitelské ovládací prvky s výjimkou XMLNodes ovládacího prvku podporují jednoduché datové vazby. Ovládací XMLNodes prvek je kolekce, a proto nepodporuje datovou vazbu.

Chcete-li provést jednoduchou datovou vazbu na ovládací prvek hostitele, přidejte Binding do DataBindings vlastnosti ovládacího prvku. Objekt Binding představuje jednoduchou vazbu mezi hodnotou vlastnosti ovládacího prvku a hodnotou datového prvku.

Následující příklad ukazuje, jak vytvořit vazbu Value2 vlastnosti na datový prvek v projektu na úrovni dokumentu.

Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);

Návody, které demonstrují jednoduchou datovou vazbu, najdete v tématu Návod: Jednoduchá datová vazba v projektu na úrovni dokumentu pro projekt na úrovni dokumentu a Návod: Jednoduchá datová vazba v projektu doplňku VSTO pro projekt doplňku VSTO.

Složitá datová vazba

Složitá datová vazba existuje, pokud je vlastnost ovládacího prvku svázaná s více než jedním datovým prvkem, například s více sloupci v tabulce dat. Ovládací ListObject prvek pro Excel je jediný ovládací prvek hostitele, který podporuje komplexní datové vazby. Existuje také mnoho ovládacích prvků model Windows Forms, které podporují komplexní datové vazby, jako DataGridView je například ovládací prvek.

Chcete-li provést komplexní datovou vazbu, nastavte DataSource vlastnost ovládacího prvku na objekt zdroje dat, který je podporován komplexní datovou vazbou. Vlastnost ListObject ovládacího prvku může být například DataSource svázána s více sloupci v tabulce dat. Všechna data v tabulce dat se zobrazí v ovládacím ListObject prvku a při změně dat v tabulce dat se ListObject také změní. Seznam zdrojů dat, které můžete použít pro složitou datovou vazbu, najdete v tématu Zdroje dat podporované model Windows Forms.

Následující příklad kódu vytvoří se DataSet dvěma DataTable objekty a naplní jednu z tabulek daty. Kód pak vytvoří vazbu na ListObject tabulku, která obsahuje data. Tento příklad je určený pro projekt na úrovni dokumentu aplikace Excel.

private void ListObject_DataSourceAndMember()
{
    // Create a DataSet and two DataTables.
    DataSet ordersDataSet = new DataSet("ordersDataSet");
    DataTable tableCustomers = new DataTable("Customers");
    DataTable tableProducts = new DataTable("Products");
    ordersDataSet.Tables.Add(tableCustomers);
    ordersDataSet.Tables.Add(tableProducts);

    // Add a data to the Customers DataTable.
    tableCustomers.Columns.Add(new DataColumn("LastName"));
    tableCustomers.Columns.Add(new DataColumn("FirstName"));
    DataRow dr = tableCustomers.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    tableCustomers.Rows.Add(dr);

    // Create a list object.
    Microsoft.Office.Tools.Excel.ListObject list1 = 
        this.Controls.AddListObject(
        this.Range["A1"], "Customers");

    // Bind the list object to the Customers table.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.DataSource = ordersDataSet;
    list1.DataMember = "Customers";
}

Návod, který demonstruje složitou datovou vazbu, najdete v tématu Návod: Složitá datová vazba v projektu na úrovni dokumentu pro projekt na úrovni dokumentu.

Zobrazení dat v dokumentech a sešitech

V model Windows Forms projektechnach Další informace o použití okna Zdroje dat najdete v tématu Vytvoření vazby model Windows Forms ovládacích prvků k datům v sadě Visual Studio a přidání nových zdrojů dat.

Přetažení ovládacích prvků z okna Zdroje dat

Ovládací prvek se v dokumentu vytvoří, když na něj přetáhnete objekt z okna Zdroje dat. Typ vytvořeného ovládacího prvku závisí na tom, jestli vytváříte vazbu jednoho sloupce dat nebo více sloupců dat.

V Excelu NamedRange se na listu vytvoří ovládací prvek pro každé jednotlivá pole a vytvoří se ListObject ovládací prvek pro každou oblast dat, která obsahuje více řádků a sloupců. Toto výchozí nastavení můžete změnit výběrem tabulky nebo pole v okně Zdroje dat a následným výběrem jiného ovládacího prvku z rozevíracího seznamu.

Do ContentControl dokumentů se přidá ovládací prvek. Typ ovládacího prvku obsahu závisí na datovém typu pole, které jste vybrali.

Vytvoření vazby dat v projektech na úrovni dokumentu v době návrhu

Následující témata ukazují příklady vazeb dat v době návrhu:

Vytvoření vazby dat v projektech doplňků VSTO

V projektech doplňků VSTO můžete přidávat ovládací prvky pouze za běhu. Následující témata ukazují příklady vazeb dat za běhu:

Aktualizace dat, která jsou svázaná s hostitelskými ovládacími prvky

Datová vazba mezi zdrojem dat a hostitelským ovládacím prvek zahrnuje obousměrnou aktualizaci dat. V jednoduché datové vazbě se změny ve zdroji dat projeví automaticky v ovládacím prvku hostitele, ale změny v ovládacím prvku hostitele vyžadují explicitní volání pro aktualizaci zdroje dat. Důvodem je, že v některých případech nejsou změny v jednom poli vázaném na data přijaty, pokud nejsou doprovázeny změnami v jiném poli vázaném na data. Můžete mít například dvě pole, jedno pro věk a jedno pro roky zkušeností. Zkušenost nemůže překročit věk. Uživatel nemůže aktualizovat věk od 50 do 25 let a potom zkušenosti od 30 do 10, pokud změny nesdílí současně. Chcete-li tento problém vyřešit, pole s jednoduchou datovou vazbou se neaktualizují, dokud se aktualizace explicitně neodesílají kódem.

Chcete-li aktualizovat zdroj dat z hostitelských ovládacích prvků, které umožňují jednoduchou datovou vazbu, je nutné odeslat aktualizace do zdroje dat v paměti (například DataSet nebo DataTable) a do back-end databáze, pokud je vaše řešení používá.

Při provádění složitých datových vazeb pomocí ListObject ovládacího prvku nemusíte explicitně aktualizovat zdroj dat v paměti. V takovém případě se změny automaticky odesílají do zdroje dat v paměti bez dalšího kódu.

Další informace naleznete v tématu Postupy: Aktualizace zdroje dat dat dat z hostitelského ovládacího prvku.