Aracılığıyla paylaş


Office Çözümlerinde Veriyi Denetime Bağlama

Microsoft Office Word belgesi veya Microsoft Office Excel çalışma sayfasındaki Windows Forms denetimlerini ve konak kontrolleri'ni veri kaynağına bağlayabilirsiniz, böylece denetimler otomatik olarak veriyi görüntüler. Uygulama ve belge düzeyi projelerinin her ikisinde de veriyi konak kontrollerine ve Windows Forms denetimlerine bağlayabilirsiniz.

Uygulama alanı: Bu konudaki bilgiler, Microsoft Office 2010 ve 2007 Microsoft Office sisteminin belge düzeyi projelerine ve uygulama düzeyi projelerine yöneliktir. Daha fazla bilgi için bkz: Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

Konak kontrolleri, Word ve Excel nesne modellerindeki nesneleri genişletir, örn. Word'deki içerik denetimleri ve Excel'deki isimlendirilmiş aralıklar. Daha fazla bilgi için bkz. Konak Öğeleri ve Konak Kontrollerine Genel Bakış.

Windows Forms ve konak kontrollerinin her ikisi de, veri kümeleri ve veri tabloları gibi veri kaynaklarına basit veri bağlama ve karmaşık veri bağlama'yı destekleyen Windows Forms veri bağlama modelini kullanır. Windows Forms'taki veri bağlama modelleri hakkında tüm bilgi için, bkz. Veri bağlama ve Windows Forms.

Mürekkepten videoya İlgili video gösterimi için, bkz. Nasıl Yaparım: Veritabanı verileri Excel'de tüketilsin mi?.

Basit Veri Bağlama

Basit veri bağlama, denetim özelliğini, veri tablosundaki değer gibi tek bir veri öğesine bağlandığında oluşur. Örneğin, NamedRange denetimi veri kümesindeki bir alana bağlanabilen Value2 özelliğine sahiptir. Veri kümesindeki alan değiştiğinde, isimlendirilmiş aralıktaki değer de değişir. XMLNodes denetimi dışındaki tüm konak denetimleri basit veri bağlamayı destekler. XMLNodes denetimi bir koleksiyondur ve böylece veri bağlamayı desteklemez.

Konak kontrolüne veri bağlamayı gerçekleştirmek için, denetimin DataBindings() özelliğine Binding ekleyin. Binding nesnesi, denetimin özellik değeri ve veri öğesinin değeri arasında basit veri bağlamasını sunar.

Aşağıdaki örnekte, belge düzeyi projesindeki veri öğesine Value2 özelliğinin nasıl bağlanacağı gösterilmektedir. Bu kod örneği DataBindings() özelliği için sağlanan daha büyük bir örneğin bir bölümüdür.

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

Basit veri bağlamayı gösteren anlatımlar amacıyla, belge düzeyi projeleri için bkz. İzlenecek Yol: Uygulama Düzeyi Projelerinde Basit Veri Bağlama, uygulama düzeyi projeleri için bkz. İzlenecek Yol: Uygulama Düzeyi Projelerinde Basit Veri Bağlama.

Karmaşık Veri Bağlama

Karmaşık veri bağlama, denetim özelliğini, veri tablosundaki çoklu sütunlar gibi birden çok veri öğesine bağlandığında oluşur. Excel için ListObject denetimi, karmaşık veri bağlamayı destekleyen tek konak kontrolüdür. Ayrıca karmaşık veri bağlamayı destekleyen birçok Windows Forms denetimleri vardır, örn. DataGridView denetimi.

Karmaşık veri bağlamayı gerçekleştirmek için, denetimin DataSource özelliğini, karmaşık veri bağlama tarafından desteklenen veri kaynağı nesnesine ayarlayın. Örneğin, ListObject denetiminin DataSource özelliği, veri tablosunda çoklu sütunlara bağlanabilir. Veri tablosundaki verilen tümü ListObject denetiminde görünür ve veri tablosundaki veri değiştiğinde, ListObject de değişir. Karmaşık veri bağlaması için kullanabileceğiniz veri kaynaklarının bir listesi için, bkz. Windows Forms tarafından desteklenen veri Kaynaklar.

Aşağıdaki kod örneği, iki DataTable nesnesiyle birlikte DataSet oluşturur ve tablolardan birini veriyle doldurur. Kod daha sonra ListObject'i veri içeren tabloya bağlar. Bu örnek, Excel belge düzeyi projesi içindir.

    Private Sub ListObject_DataSourceAndMember()
        ' Create a DataSet and two DataTables.
        Dim ordersDataSet As New DataSet("ordersDataSet")
        Dim tableCustomers As New DataTable("Customers")
        Dim tableProducts As 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"))
        Dim dr As DataRow = tableCustomers.NewRow()
        dr("LastName") = "Chan"
        dr("FirstName") = "Gareth"
        tableCustomers.Rows.Add(dr)

        ' Create a list object.
        Dim List1 As Microsoft.Office.Tools.Excel.ListObject = _
            Me.Controls.AddListObject(Me.Range( _
            "A1"), "Customers")

        ' Bind the list object to the Customers table.
        List1.AutoSetDataBoundColumnHeaders = True
        List1.DataSource = ordersDataSet
        List1.DataMember = "Customers"

    End Sub

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", missing], "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 anlatımları üzerine, belge düzeyi projeleri için bkz. İzlenecek Yol: Uygulama Düzeyi Projelerinde Karmaşık Veri Bağlama, uygulama düzeyi projeleri için bkz. İzlenecek Yol: Uygulama Düzeyi Projelerinde Karmaşık Veri Bağlama.

Belgelerde ve Çalışma Kitaplarında Veriyi Görüntüleme

Belge düzeyi projelerinde, Veri Kaynakları penceresini, belgenize veya çalışma kitaplarınıza veriye bağlı denetimleri kolayca eklemek için, Windows Forms için kullanıdığınız yollarda kullanabilirsiniz. Veri Kaynakları penceresini kullanma hakkında daha fazla bilgi için bkz. Windows Forms Denetimler Visual Studio veri bağlama ve Veri Kaynakları Penceresi.

Veri Kaynakları Penceresinden Denetimleri Sürükleme

Veri Kaynakları penceresinden bir nesneyi sürüklediğinizde belgenizde bir denetim oluşturulur. Oluşturulan denetimin türü, verinin tek ya da çoklu sütünlarını bağlamanıza bağlıdır.

Excel'de, her tek alan için NamedRange denetimi çalışma sayfasında oluşturulur ve ListObject denetimi, çoklu satır ve sütunlar içeren her veri aralığı için yaratılır. Veri Kaynakları penceresinden tablo veya alanı seçip sonra açılır listeden farklı bir denetim tercih ederek bu varsayılanı değiştirebilirsiniz.

ContentControl denetimi belgeye eklenir. İçerik denetiminin türü seçtiğiniz alanın veri türüne bağlıdır.

Belge Düzeyi Projelerinde Tasarım Zamanında Denetim Ekleme

Aşağıdaki konularda tasarım zamanında veri bağlama örnekleri gösterilmektedir.

Uygulama Düzeyi Projelerinde Veri Bağlama

Ugulama düzeyi projesinde, denetimleri sadece çalışma zamanında ekleyebilirsiniz. Aşağıdaki konularda çalışma zamanında veri bağlama örnekleri gösterilmektedir.

Konak Kontrollerine Bağlı Olan Veriyi Güncelleme

Veri kaynağı ve konak kontrolü arasında veri bağlama iki yönlü veri güncellemesini içerir. Basit veri bağlamada, veri kaynağındaki değişiklikler otomatik olarak konak kontrollerine yansıtılır, ama konak kontrolündeki değişiklikler veri kaynağını güncellemek için açık bir çağrı gerektirir. Bunun sebebi, bazı durumlarda veriye bağlı bir alandaki değişikliklerin, başka bir veriye bağlı alandaki değişiklikleri içermediği sürece kabul edilmemesidir. Örneğin, iki tane alanınız olabilir; biri yaş için ötekisi de deneyim yılı için. Deneyim, yaşı geçemez. Kullanıcı, değişiklikleri aynı anda yapmadığı sürece, yaşı 50'den 25'e ve deneyimi de 30'dan 10'a güncelleyemez. Bu problemi çözmek için, basit veri bağlaması ile alanlar, değişiklikler kodla açıkça yollanmadıkca güncellenmez.

Veri kaynağını, basit veri bağlamasına olanak sağlayan konak kontrollerinden güncellemek için, güncellemeleri bellekteki veri kaynağına (DataSet veya DataTable gibi) ve sonra da eğer çözümünüz kullanıyorsa, arka uç veritabanına yollamalısınız.

ListObject denetimini kullanarak karmaşık veri bağlama gerçekleştirdiğinizde bellekteki veri kaynağını açıkça güncellemenizde gerek yoktur. Bu durumda, değişiklikler ek kod olmaksızın otomatik olarak bellekteki veri kaynağına gönderilir.

Daha fazla bilgi için bkz. Nasıl Yapılır: Konak Kontrolündeki Veri ile Veri Kaynağını Güncelleme.

Ayrıca bkz.

Görevler

Nasıl Yapılır: Bir basit-Bağımlı denetimi Windows Formu oluşturmak

Nasıl Yapılır: Bir TableAdapter kullanarak veri Güncelleştir

Kavramlar

Veri bağlama ve Windows Forms

Windows Forms Denetimler Visual Studio veri bağlama

Veri veri Kaydediliyor

Veriyi Önbelleğe Alma

Diğer Kaynaklar

Nasıl Yapılır? Veritabanı verileri Excel'de tüketilsin mi?

Concurrency Control in ADO.NET

Office Çözümlerindeki Veri