Office çözümlerindeki denetimlere veri bağlama

Şunlar için geçerlidir:yesnoVisual Studio Mac için Visual Studio noVisual Studio Code

Microsoft Office Bir Word belgesinde veya Microsoft Office Excel çalışma sayfasında Windows Forms denetimleri ve konak denetimlerini bir veri kaynağına bağlayarak denetimlerin verileri otomatik olarak görüntülemesini sağlayabilirsiniz. Hem uygulama düzeyi hem de belge düzeyi projelerindeki denetimlere veri bağlayabilirsiniz.

Şunlar için geçerlidir: Bu konudaki bilgiler belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Bkz. Office uygulama ve proje türüne göre kullanılabilen özellikler.

Konak denetimleri, Word'deki içerik denetimleri ve Excel adlandırılmış aralıklar gibi Word ve Excel nesne modellerindeki nesneleri genişletir. Daha fazla bilgi için bkz . Konak öğelerine ve konak denetimlerine genel bakış.

Hem Windows Forms hem de konak denetimleri, veri kümeleri ve veri tabloları gibi veri kaynaklarına hem basit veri bağlamayı hem de karmaşık veri bağlamayı destekleyen Windows Forms veri bağlama modelini kullanır. Windows Forms'daki veri bağlama modeli hakkında tam bilgi için bkz. Veri bağlama ve Windows Forms.

Basit veri bağlama

Bir denetim özelliği, veri tablosundaki bir değer gibi tek bir veri öğesine bağlı olduğunda basit veri bağlaması vardır. Örneğin, denetimin veri kümesindeki NamedRange bir Value2 alana bağlanabilen bir özelliği vardır. Veri kümesindeki alan değiştiğinde, adlandırılmış aralıktaki değer de değişir. Denetim dışındaki tüm konak denetimleri basit veri bağlamayı XMLNodes destekler. Denetim XMLNodes bir koleksiyondur ve bu nedenle veri bağlamayı desteklemez.

Bir konak denetimine basit veri bağlama gerçekleştirmek için denetimin DataBindings özelliğine bir Binding ekleyin. Nesne Binding , denetimin özellik değeri ile veri öğesinin değeri arasındaki basit bağlamayı temsil eder.

Aşağıdaki örnek, özelliğin belge düzeyi projesindeki Value2 bir veri öğesine nasıl bağlanacağını gösterir.

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

Basit veri bağlamayı gösteren izlenecek yollar için bkz . İzlenecek yol: Belge düzeyi projesi için belge düzeyinde bir projede basit veri bağlama ve İzlenecek yol: VSTO Eklenti projesi için VSTO Eklenti projesinde basit veri bağlama .

Karmaşık veri bağlama

Bir denetim özelliği, bir veri tablosundaki birden çok sütun gibi birden fazla veri öğesine bağlı olduğunda karmaşık veri bağlaması vardır. ListObject Excel denetimi, karmaşık veri bağlamayı destekleyen tek konak denetimidir. Ayrıca, denetim gibi DataGridView karmaşık veri bağlamayı destekleyen birçok Windows Forms denetimi vardır.

Karmaşık veri bağlama gerçekleştirmek için, denetimin özelliğini karmaşık veri bağlama tarafından desteklenen bir veri kaynağı nesnesine ayarlayın DataSource . Örneğin, DataSource denetimin ListObject özelliği bir veri tablosundaki birden çok sütuna bağlanabilir. Veri tablosundaki tüm veriler denetimde ListObject görünür ve veri tablosundaki veriler değiştikçe de ListObject değişir. Karmaşık veri bağlama için kullanabileceğiniz veri kaynaklarının listesi için bkz. Windows Forms tarafından desteklenen veri kaynakları.

Aşağıdaki kod örneği, iki DataTable nesne içeren bir DataSet oluşturur ve tablolardan birini verilerle doldurur. Kod daha sonra öğesini veri içeren tabloya bağlar ListObject . Bu örnek, belge düzeyinde Excel bir projeye yöneliktir.

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";
}

Karmaşık veri bağlamayı gösteren izlenecek yollar için bkz . belge düzeyi projesi için İzlenecek yol: Belge düzeyinde bir projede karmaşık veri bağlama ve İzlenecek yol: VSTO Eklenti projesi için VSTO Eklenti projesinde karmaşık veri bağlama .

Belgelerde ve çalışma kitaplarında verileri görüntüleme

Belge düzeyindeki projelerde, veriye bağlı denetimleri Windows Forms için kullandığınız gibi belgelerinize veya çalışma kitaplarınıza kolayca eklemek için Veri Kaynakları penceresini kullanabilirsiniz. Veri Kaynakları penceresini kullanma hakkında daha fazla bilgi için bkz. Visual Studio'daki verilere Windows Forms denetimleri bağlama ve Yeni veri kaynakları ekleme.

Denetimleri Veri Kaynakları penceresinden sürükleme

Bir nesneyi Veri Kaynakları penceresinden üzerine sürüklediğinizde belgede bir denetim oluşturulur. Oluşturulan denetimin türü, tek bir veri sütununu mu yoksa birden çok veri sütununu mu bağladığınıza bağlıdır.

Excel için çalışma sayfasında her bir alan için bir NamedRange denetim oluşturulur ve her veri aralığı için birden çok satır ve sütun içeren bir ListObject denetim oluşturulur. Veri Kaynakları penceresinde tabloyu veya alanı seçip açılan listeden farklı bir denetim seçerek bu varsayılanı değiştirebilirsiniz.

ContentControl Belgelere bir denetim eklenir. İçerik denetiminin türü, seçtiğiniz alanın veri türüne bağlıdır.

Tasarım zamanında belge düzeyindeki projelerde veri bağlama

Aşağıdaki konular, tasarım zamanındaki bağlama verilerinin örneklerini gösterir:

VSTO Eklenti projelerinde veri bağlama

VSTO Eklenti projelerinde, denetimleri yalnızca çalışma zamanında ekleyebilirsiniz. Aşağıdaki konular çalışma zamanında verileri bağlama örneklerini gösterir:

Konak denetimlerine bağlı verileri güncelleştirme

Veri kaynağı ile konak denetimi arasında veri bağlama, iki yönlü bir veri güncelleştirmesi içerir. Basit veri bağlamada, veri kaynağındaki değişiklikler konak denetimine otomatik olarak yansıtılır, ancak konak denetimindeki değişiklikler, veri kaynağını güncelleştirmek için açık bir çağrı gerektirir. Bunun nedeni, bazı durumlarda, veriye bağlı bir alandaki değişikliklerin başka bir veriye bağlı alandaki değişikliklerle birlikte gelmediği sürece kabul edilmemesidir. Örneğin, biri yaş, biri de yılların deneyimi için olmak üzere iki alanınız olabilir. Deneyim yaşı aşamaz. Bir kullanıcı, aynı anda değişiklik yapmadığı sürece yaşı 50'den 25'e ve ardından 30'dan 10'a kadar olan deneyimi güncelleştiremez. Bu sorunu çözmek için, basit veri bağlaması olan alanlar, güncelleştirmeler kod tarafından açıkça gönderilene kadar güncelleştirilmez.

Basit veri bağlamayı etkinleştiren konak denetimlerinden bir veri kaynağını güncelleştirmek için, çözümünüzün kullandığı güncelleştirmeleri bellek içi veri kaynağına (veya DataTablegibiDataSet) ve arka uç veritabanına göndermeniz gerekir.

Denetimi kullanarak ListObject karmaşık veri bağlaması gerçekleştirirken bellek içi veri kaynağını açıkça güncelleştirmeniz gerekmez. Bu durumda, değişiklikler ek kod olmadan otomatik olarak bellek içi veri kaynağına gönderilir.

Daha fazla bilgi için bkz . Nasıl yapılır: Bir veri kaynağını konak denetimindeki verilerle güncelleştirme.

Ayrıca bkz.