Bagikan melalui


Mengikat data ke kontrol di solusi Office

Anda bisa mengikat kontrol Formulir Windows dan kontrol host pada dokumen Microsoft Office Word atau lembar kerja Microsoft Office Excel ke sumber data sehingga kontrol secara otomatis menampilkan data. Anda dapat mengikat data ke kontrol dalam proyek tingkat aplikasi dan tingkat dokumen.

Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek tingkat dokumen dan proyek Add-in VSTO. Lihat Fitur yang tersedia berdasarkan aplikasi Office likasi dan jenis proyek.

Kontrol host memperluas objek yang ada di model objek Word dan Excel, seperti kontrol konten di Word dan rentang bernama di Excel. Untuk informasi selengkapnya, lihat Gambaran umum item host dan kontrol host.

Kontrol Formulir Windows dan host menggunakan model pengikatan data Formulir Windows, yang mendukung pengikatan data sederhana dan pengikatan data kompleks ke sumber data seperti himpunan data dan tabel data. Untuk informasi lengkap tentang model pengikatan data di Formulir Windows, lihat Pengikatan data dan Formulir Windows.

Pengikatan data sederhana

Pengikatan data sederhana ada saat properti kontrol terikat ke satu elemen data, seperti nilai dalam tabel data. Misalnya, NamedRange kontrol memiliki Value2 properti yang dapat terikat ke bidang dalam himpunan data. Saat bidang dalam himpunan data berubah, nilai dalam rentang bernama juga berubah. Semua kontrol host, kecuali untuk XMLNodes kontrol, mendukung pengikatan data sederhana. Kontrol XMLNodes adalah koleksi, dan oleh karena itu tidak mendukung pengikatan data.

Untuk melakukan pengikatan data sederhana ke kontrol host, tambahkan Binding ke DataBindings properti kontrol. Objek Binding mewakili pengikatan sederhana antara nilai properti kontrol dan nilai elemen data.

Contoh berikut menunjukkan cara mengikat Value2 properti ke elemen data dalam proyek tingkat dokumen.

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

Untuk panduan yang menunjukkan pengikatan data sederhana, lihat Panduan: Pengikatan data sederhana dalam proyek tingkat dokumen untuk proyek tingkat dokumen dan Panduan: Pengikatan data sederhana dalam proyek Add-in VSTO untuk proyek Add-in VSTO.

Pengikatan data kompleks

Pengikatan data kompleks ada saat properti kontrol terikat ke lebih dari satu elemen data, seperti beberapa kolom dalam tabel data. ListObject Kontrol untuk Excel adalah satu-satunya kontrol host yang mendukung pengikatan data kompleks. Ada juga banyak kontrol Formulir Windows yang mendukung pengikatan data kompleks, seperti DataGridView kontrol.

Untuk melakukan pengikatan data yang kompleks, atur DataSource properti kontrol ke objek sumber data yang didukung oleh pengikatan data yang kompleks. Misalnya, DataSource properti ListObject kontrol dapat terikat ke beberapa kolom dalam tabel data. Semua data dalam tabel data muncul di ListObject kontrol, dan saat data dalam tabel data berubah, ListObject juga berubah. Untuk daftar sumber data yang bisa Anda gunakan untuk pengikatan data kompleks, lihat Sumber data yang didukung oleh Formulir Windows.

Contoh kode berikut membuat DataSet dengan dua DataTable objek dan mengisi salah satu tabel dengan data. Kode kemudian mengikat ListObject ke tabel yang berisi data. Contoh ini untuk proyek tingkat dokumen 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";
}

Untuk panduan yang menunjukkan pengikatan data yang kompleks, lihat Panduan: Pengikatan data kompleks dalam proyek tingkat dokumen untuk proyek tingkat dokumen.

Menampilkan data dalam dokumen dan buku kerja

Dalam proyek tingkat dokumen, Anda bisa menggunakan jendela Sumber Data untuk menambahkan kontrol terikat data ke dokumen atau buku kerja Anda dengan mudah, dengan cara yang sama seperti Anda menggunakannya untuk Formulir Windows. Untuk informasi selengkapnya tentang menggunakan jendela Sumber Data, lihat Mengikat kontrol Formulir Windows ke data di Visual Studio dan Menambahkan sumber data baru.

Seret kontrol dari jendela Sumber Data

Kontrol dibuat pada dokumen saat Anda menyeret objek ke dalamnya dari jendela Sumber Data. Jenis kontrol yang dibuat bergantung pada apakah Anda mengikat satu kolom data atau beberapa kolom data.

Untuk Excel, NamedRange kontrol dibuat pada lembar kerja untuk setiap bidang individual, dan ListObject kontrol dibuat untuk setiap rentang data yang menyertakan beberapa baris dan kolom. Anda dapat mengubah default ini dengan memilih tabel atau bidang di jendela Sumber Data lalu memilih kontrol yang berbeda dari daftar drop-down.

ContentControl Kontrol ditambahkan ke dokumen. Tipe kontrol konten bergantung pada tipe data bidang yang Anda pilih.

Mengikat data dalam proyek tingkat dokumen pada waktu desain

Topik berikut menunjukkan contoh data pengikatan pada waktu desain:

Mengikat data dalam proyek Add-in VSTO

Di proyek Add-in VSTO, Anda hanya dapat menambahkan kontrol pada waktu proses. Topik berikut menunjukkan contoh data pengikatan pada waktu proses:

Memperbarui data yang terikat ke kontrol host

Pengikatan data antara sumber data dan kontrol host melibatkan pembaruan data dua arah. Dalam pengikatan data sederhana, perubahan dalam sumber data tercermin secara otomatis dalam kontrol host, tetapi perubahan dalam kontrol host memerlukan panggilan eksplisit untuk memperbarui sumber data. Alasannya adalah bahwa dalam beberapa kasus, perubahan dalam satu bidang terikat data tidak diterima kecuali disertai dengan perubahan di bidang terikat data lain. Misalnya, Anda mungkin memiliki dua bidang, satu untuk usia dan satu untuk pengalaman bertahun-tahun. Pengalaman tidak boleh melebihi usia. Pengguna tidak dapat memperbarui usia dari 50 hingga 25 dan kemudian pengalaman dari 30 menjadi 10 kecuali dia membuat perubahan pada saat yang sama. Untuk mengatasi masalah ini, bidang dengan pengikatan data sederhana tidak diperbarui sampai pembaruan dikirim secara eksplisit oleh kode.

Untuk memperbarui sumber data dari kontrol host yang mengaktifkan pengikatan data sederhana, Anda harus mengirim pembaruan ke sumber data dalam memori (seperti DataSet atau DataTable) dan ke database back-end, jika solusi Anda menggunakannya.

Anda tidak perlu memperbarui sumber data dalam memori secara eksplisit saat Anda melakukan pengikatan data yang kompleks menggunakan ListObject kontrol. Dalam hal ini, perubahan secara otomatis dikirim ke sumber data dalam memori tanpa kode tambahan.

Untuk informasi selengkapnya, lihat Cara: Memperbarui sumber data dengan data dari kontrol host.