Gambaran umum pengikatan data (Formulir Windows .NET)
Dalam Formulir Windows, Anda dapat mengikat ke tidak hanya sumber data tradisional, tetapi juga ke hampir semua struktur yang berisi data. Anda dapat mengikat ke array nilai yang Anda hitung pada waktu proses, membaca dari file, atau berasal dari nilai kontrol lain.
Selain itu, Anda dapat mengikat properti apa pun dari kontrol apa pun ke sumber data. Dalam pengikatan data tradisional, Anda biasanya mengikat properti tampilan—misalnya, Text properti TextBox kontrol—ke sumber data. Dengan .NET, Anda juga memiliki opsi untuk mengatur properti lain melalui pengikatan. Anda mungkin menggunakan pengikatan untuk melakukan tugas berikut:
Mengatur grafik kontrol gambar.
Mengatur warna latar belakang dari satu atau beberapa kontrol.
Mengatur ukuran kontrol.
Pada dasarnya, pengikatan data adalah cara otomatis untuk mengatur properti yang dapat diakses run-time dari kontrol apa pun pada formulir.
Antarmuka yang terkait dengan pengikatan data
ADO.NET memungkinkan Anda membuat banyak struktur data yang berbeda agar sesuai dengan kebutuhan pengikatan aplikasi Anda dan data yang sedang Anda kerjakan. Anda mungkin ingin membuat kelas Anda sendiri yang menyediakan atau menggunakan data dalam Formulir Windows. Objek ini dapat menawarkan berbagai tingkat fungsionalitas dan kompleksitas. Mulai dari pengikatan data dasar, hingga menyediakan dukungan waktu desain, pemeriksaan kesalahan, pemberitahuan perubahan, atau bahkan dukungan untuk pemutaran kembali terstruktur perubahan yang dilakukan pada data itu sendiri.
Konsumen antarmuka pengikatan data
Bagian berikut menjelaskan dua grup objek antarmuka. Grup antarmuka pertama diimplementasikan pada sumber data oleh penulis sumber data. Konsumen sumber data seperti kontrol atau komponen Formulir Windows mengimplementasikan antarmuka ini. Grup antarmuka kedua dirancang untuk digunakan oleh penulis komponen. Penulis komponen menggunakan antarmuka ini saat mereka membuat komponen yang mendukung pengikatan data untuk dikonsumsi oleh mesin pengikatan data Formulir Windows. Anda dapat menerapkan antarmuka ini dalam kelas yang terkait dengan formulir Anda untuk mengaktifkan pengikatan data. Setiap kasus menyajikan kelas yang mengimplementasikan antarmuka yang memungkinkan interaksi dengan data. Alat pengalaman desain data pengembangan aplikasi cepat Visual Studio (RAD) sudah memanfaatkan fungsionalitas ini.
Antarmuka untuk implementasi oleh penulis sumber data
Kontrol Formulir Windows menerapkan antarmuka berikut:
Antarmuka IList
Kelas yang mengimplementasikan IList antarmuka bisa berupa Array, , ArrayListatau CollectionBase. Ini adalah daftar item terindeks jenis Object dan daftar harus berisi jenis homogen, karena item pertama indeks menentukan jenisnya.
IList
akan tersedia untuk pengikatan hanya pada waktu proses.Catatan
Jika Anda ingin membuat daftar objek bisnis untuk pengikatan dengan Formulir Windows, Anda harus mempertimbangkan untuk menggunakan BindingList<T>.
BindingList
adalah kelas yang dapat diperluas yang mengimplementasikan antarmuka utama yang diperlukan untuk pengikatan data Formulir Windows dua arah.Antarmuka IBindingList
Kelas yang mengimplementasikan IBindingList antarmuka menyediakan tingkat fungsionalitas pengikatan data yang jauh lebih tinggi. Implementasi ini menawarkan kemampuan pengurutan dasar dan pemberitahuan perubahan. Keduanya berguna ketika item daftar berubah, dan ketika daftar itu sendiri berubah. Pemberitahuan perubahan penting jika Anda berencana untuk memiliki beberapa kontrol yang terikat ke data yang sama. Ini membantu Anda membuat perubahan data yang dibuat di salah satu kontrol untuk disebarluaskan ke kontrol terikat lainnya.
Catatan
Pemberitahuan perubahan diaktifkan untuk IBindingList antarmuka melalui SupportsChangeNotification properti yang, ketika
true
, menaikkan ListChanged peristiwa, menunjukkan daftar berubah atau item dalam daftar berubah.Jenis perubahan dijelaskan oleh ListChangedType properti ListChangedEventArgs parameter . Oleh karena itu, setiap kali model data diperbarui, tampilan dependen apa pun, seperti kontrol lain yang terikat ke sumber data yang sama, juga akan diperbarui. Namun, objek yang terkandung dalam daftar harus memberi tahu daftar saat berubah sehingga daftar dapat menaikkan ListChanged peristiwa.
Catatan
BindingList<T> menyediakan implementasi generik antarmukaIBindingList.
Antarmuka IBindingListView
Kelas yang mengimplementasikan IBindingListView antarmuka menyediakan semua fungsionalitas implementasi IBindingList, bersama dengan fungsionalitas pemfilteran dan pengurutan tingkat lanjut. Implementasi ini menawarkan pemfilteran berbasis string, dan pengurutan multi-kolom dengan pasangan arah deskriptor properti.
Antarmuka IEditableObject
Kelas yang mengimplementasikan IEditableObject antarmuka memungkinkan objek untuk mengontrol kapan perubahan pada objek tersebut dibuat permanen. Implementasi ini mendukung BeginEditmetode , EndEdit, dan CancelEdit , yang memungkinkan Anda untuk mengembalikan perubahan yang dilakukan pada objek. Berikut ini adalah penjelasan singkat tentang fungsi
BeginEdit
metode , ,EndEdit
danCancelEdit
dan dan bagaimana mereka bekerja satu sama lain untuk memungkinkan kemungkinan pemutaran kembali perubahan yang dilakukan pada data:Metode ini BeginEdit menandakan dimulainya pengeditan pada objek. Objek yang mengimplementasikan antarmuka ini perlu menyimpan pembaruan apa pun setelah
BeginEdit
panggilan metode sedih sehingga pembaruan dapat dibuang jika CancelEdit metode dipanggil. Dalam Formulir Windows pengikatan data, Anda dapat memanggilBeginEdit
beberapa kali dalam cakupan satu transaksi edit (misalnya,BeginEdit
,BeginEdit
, EndEdit). IEditableObject Implementasi harus melacak apakahBeginEdit
telah dipanggil dan mengabaikan panggilan berikutnya keBeginEdit
. Karena metode ini dapat dipanggil beberapa kali, penting bahwa panggilan berikutnya ke metode ini tidak merusak. Panggilan berikutnyaBeginEdit
tidak dapat menghancurkan pembaruan yang telah dilakukan atau mengubah data yang disimpan pada panggilan pertamaBeginEdit
.Metode ini EndEdit mendorong perubahan apa pun sejak BeginEdit dipanggil ke objek yang mendasar, jika objek saat ini dalam mode edit.
Metode membuang CancelEdit perubahan apa pun yang dilakukan pada objek.
Untuk informasi selengkapnya tentang cara BeginEditkerja metode , EndEdit, dan CancelEdit , lihat Menyimpan data kembali ke database.
Gagasan transaksional fungsionalitas data ini digunakan oleh DataGridView kontrol.
Antarmuka ICancelAddNew
Kelas yang mengimplementasikan ICancelAddNew antarmuka biasanya mengimplementasikan IBindingList antarmuka dan memungkinkan Anda untuk mengembalikan penambahan yang dibuat ke sumber data dengan AddNew metode . Jika sumber data Mengimplementasikan
IBindingList
antarmuka, Anda juga harus mengimplementasikanICancelAddNew
antarmuka.Antarmuka IDataErrorInfo
Kelas yang mengimplementasikan IDataErrorInfo antarmuka memungkinkan objek untuk menawarkan informasi kesalahan kustom ke kontrol terikat:
Antarmuka IEnumerable
Kelas yang mengimplementasikan antarmuka biasanya dikonsumsi IEnumerable oleh ASP.NET. Formulir Windows dukungan untuk antarmuka ini hanya tersedia melalui BindingSource komponen.
Catatan
Komponen BindingSource menyalin semua IEnumerable item ke dalam daftar terpisah untuk tujuan pengikatan.
Antarmuka ITypedList
Kelas koleksi yang mengimplementasikan ITypedList antarmuka menyediakan fitur untuk mengontrol urutan dan kumpulan properti yang terekspos ke kontrol terikat.
Catatan
Ketika Anda menerapkan GetItemProperties metode , dan PropertyDescriptor array tidak null, entri terakhir dalam array akan menjadi deskriptor properti yang menjelaskan properti daftar yang merupakan daftar item lain.
Antarmuka ICustomTypeDescriptor
Kelas yang mengimplementasikan ICustomTypeDescriptor antarmuka menyediakan informasi dinamis tentang dirinya sendiri. Antarmuka ini mirip ITypedList dengan tetapi digunakan untuk objek daripada daftar. Antarmuka ini digunakan oleh DataRowView untuk memproyeksikan skema baris yang mendasar. Implementasi
ICustomTypeDescriptor
sederhana disediakan oleh CustomTypeDescriptor kelas .Catatan
Untuk mendukung pengikatan waktu desain ke jenis yang mengimplementasikan ICustomTypeDescriptor, jenisnya juga harus mengimplementasikan IComponent dan ada sebagai instans pada Formulir.
Antarmuka IListSource
Kelas yang mengimplementasikan IListSource antarmuka memungkinkan pengikatan berbasis daftar pada objek non-daftar. Metode GetList digunakan
IListSource
untuk mengembalikan daftar yang dapat diikat dari objek yang tidak mewarisi dari IList.IListSource
digunakan oleh DataSet kelas .Antarmuka IRaiseItemChangedEvents
Kelas yang mengimplementasikan IRaiseItemChangedEvents antarmuka adalah daftar yang dapat diikat yang juga mengimplementasikan IBindingList antarmuka. Antarmuka ini digunakan untuk menunjukkan apakah jenis Anda menaikkan ListChanged peristiwa jenis ItemChanged melalui propertinya RaisesItemChangedEvents .
Catatan
Anda harus menerapkan IRaiseItemChangedEvents jika sumber data Anda menyediakan properti untuk mencantumkan konversi peristiwa yang dijelaskan sebelumnya dan berinteraksi dengan BindingSource komponen. Jika tidak,
BindingSource
properti juga akan melakukan untuk mencantumkan konversi peristiwa yang mengakibatkan performa yang lebih lambat.Antarmuka ISupportInitialize
Komponen yang mengimplementasikan ISupportInitialize antarmuka memanfaatkan pengoptimalan batch untuk mengatur properti dan menginisialisasi properti yang bergantung pada bersama.
ISupportInitialize
berisi dua metode:Antarmuka ISupportInitializeNotification
Komponen yang mengimplementasikan ISupportInitializeNotification antarmuka juga mengimplementasikan ISupportInitialize antarmuka. Antarmuka ini memungkinkan Anda untuk memberi tahu komponen lain
ISupportInitialize
bahwa inisialisasi selesai. AntarmukaISupportInitializeNotification
berisi dua anggota:IsInitialized mengembalikan nilai yang
boolean
menunjukkan apakah komponen diinisialisasi.Initialized terjadi ketika EndInit dipanggil.
Antarmuka INotifyPropertyChanged
Kelas yang mengimplementasikan antarmuka ini adalah jenis yang menaikkan peristiwa ketika salah satu nilai propertinya berubah. Antarmuka ini dirancang untuk menggantikan pola memiliki peristiwa perubahan untuk setiap properti kontrol. Ketika digunakan dalam BindingList<T>, objek bisnis harus mengimplementasikan INotifyPropertyChanged antarmuka dan BindingList'1 akan mengonversi PropertyChanged peristiwa menjadi ListChanged peristiwa jenis ItemChanged.
Catatan
Agar pemberitahuan perubahan terjadi dalam pengikatan antara klien terikat dan sumber data, jenis sumber data terikat Anda harus mengimplementasikan INotifyPropertyChanged antarmuka (pilihan) atau Anda dapat menyediakan peristiwa propertyName
Changed
untuk jenis terikat, tetapi Anda tidak boleh melakukan keduanya.
Antarmuka untuk implementasi oleh penulis komponen
Antarmuka berikut dirancang untuk dikonsumsi oleh mesin pengikatan data Formulir Windows:
Antarmuka IBindableComponent
Kelas yang mengimplementasikan antarmuka ini adalah komponen non-kontrol yang mendukung pengikatan data. Kelas ini mengembalikan pengikatan data dan konteks pengikatan komponen melalui DataBindings properti dan BindingContext antarmuka ini.
Catatan
Jika komponen Anda mewarisi dari Control, Anda tidak perlu mengimplementasikan IBindableComponent antarmuka.
Antarmuka ICurrencyManagerProvider
Kelas yang mengimplementasikan ICurrencyManagerProvider antarmuka adalah komponen yang menyediakan sendiri CurrencyManager untuk mengelola pengikatan yang terkait dengan komponen khusus ini. Akses ke kustom
CurrencyManager
disediakan oleh CurrencyManager properti .Catatan
Kelas yang mewarisi dari Control mengelola pengikatan secara otomatis melalui propertinya BindingContext , jadi kasus di mana Anda perlu mengimplementasikannya ICurrencyManagerProvider cukup jarang.
Sumber data yang didukung oleh Formulir Windows
Secara tradisional, pengikatan data telah digunakan dalam aplikasi untuk memanfaatkan data yang disimpan dalam database. Dengan Formulir Windows pengikatan data, Anda dapat mengakses data dari database dan data di struktur lain, seperti array dan koleksi, selama persyaratan minimum tertentu telah terpenuhi.
Struktur untuk mengikat Ke
Dalam Formulir Windows, Anda dapat mengikat ke berbagai struktur, mulai dari objek sederhana (pengikatan sederhana) hingga daftar kompleks seperti tabel data ADO.NET (pengikatan kompleks). Untuk pengikatan sederhana, Formulir Windows mendukung pengikatan ke properti publik pada objek sederhana. Formulir Windows pengikatan berbasis daftar umumnya mengharuskan objek mendukung IList antarmuka atau IListSource antarmuka. Selain itu, jika Anda mengikat melalui BindingSource komponen, Anda dapat mengikat ke objek yang mendukung IEnumerable antarmuka.
Daftar berikut ini memperlihatkan struktur yang bisa Anda ikat di Formulir Windows.
-
adalah BindingSource sumber data Formulir Windows yang paling umum dan bertindak proksi antara sumber data dan kontrol Formulir Windows. Pola penggunaan umum
BindingSource
adalah mengikat kontrol Anda keBindingSource
dan mengikatBindingSource
ke sumber data (misalnya, tabel data ADO.NET atau objek bisnis). menyediakanBindingSource
layanan yang memungkinkan dan meningkatkan tingkat dukungan pengikatan data. Misalnya, Formulir Windows kontrol berbasis daftar seperti DataGridView dan ComboBox tidak secara langsung mendukung pengikatan ke IEnumerable sumber data namun, Anda dapat mengaktifkan skenario ini dengan mengikat melaluiBindingSource
. Dalam hal ini,BindingSource
akan mengonversi sumber data menjadi IList. Objek sederhana
Formulir Windows mendukung properti kontrol pengikatan data ke properti publik pada instans objek menggunakan jenis .Binding Formulir Windows juga mendukung kontrol berbasis daftar pengikatan, seperti ListControl ke instans objek saat BindingSource digunakan.
Array atau Koleksi
Untuk bertindak sebagai sumber data, daftar harus mengimplementasikan IList antarmuka; salah satu contohnya adalah array yang merupakan instans Array kelas. Untuk informasi selengkapnya tentang array, lihat Cara: Membuat Array Objek (Visual Basic).
Secara umum, Anda harus menggunakan BindingList<T> saat membuat daftar objek untuk pengikatan data.
BindingList
adalah versi generik antarmuka IBindingList . AntarmukaIBindingList
memperluas IList antarmuka dengan menambahkan properti, metode, dan peristiwa yang diperlukan untuk pengikatan data dua arah.-
Formulir Windows kontrol dapat terikat ke sumber data yang hanya mendukung IEnumerable antarmuka jika terikat melalui BindingSource komponen.
ADO.NET objek data
ADO.NET menyediakan banyak struktur data yang cocok untuk diikat. Masing-masing bervariasi dalam kecanggih dan kompleksitasnya.
-
adalah DataColumn blok penyusun penting dari DataTable, dalam beberapa kolom yang terdiri dari tabel. Masing-masing
DataColumn
memiliki DataType properti yang menentukan jenis data yang dipegang kolom (misalnya, pembuatan mobil dalam tabel yang menjelaskan mobil). Anda dapat mengikat kontrol dengan sederhana (seperti TextBox properti kontrol Text ) ke kolom dalam tabel data. -
A DataTable adalah representasi tabel, dengan baris dan kolom, dalam ADO.NET. Tabel data berisi dua koleksi: DataColumn, yang mewakili kolom data dalam tabel tertentu (yang pada akhirnya menentukan jenis data yang dapat dimasukkan ke dalam tabel tersebut), dan DataRow, mewakili baris data dalam tabel tertentu. Anda dapat mengikat kontrol ke informasi yang terkandung dalam tabel data (seperti mengikat DataGridView kontrol ke tabel data). Namun, saat Anda mengikat ke
DataTable
, Anda adalah pengikatan ke tampilan default tabel. -
DataView adalah tampilan yang dikustomisasi dari satu tabel data yang mungkin difilter atau diurutkan. Tampilan data adalah "rekam jepret" data yang digunakan oleh kontrol yang terikat kompleks. Anda dapat mengikat sederhana atau mengikat kompleks ke data dalam tampilan data, tetapi perhatikan bahwa Anda mengikat "gambar" data tetap daripada sumber data yang bersih dan diperbarui.
-
DataSet adalah kumpulan tabel, hubungan, dan batasan data dalam database. Anda dapat mengikat sederhana atau mengikat kompleks ke data dalam himpunan data, tetapi perhatikan bahwa Anda mengikat ke default DataViewManager untuk
DataSet
(lihat poin berikutnya). -
DataViewManager adalah tampilan yang disesuaikan dari seluruh DataSet, dianalogikan ke DataView, tetapi dengan hubungan disertakan. DataViewSettings Dengan koleksi, Anda dapat mengatur filter default dan opsi pengurutan untuk tampilan apa pun yang
DataViewManager
dimiliki untuk tabel tertentu.
-
Jenis pengikatan data
Formulir Windows dapat memanfaatkan dua jenis pengikatan data: pengikatan sederhana dan pengikatan yang kompleks. Masing-masing menawarkan keuntungan yang berbeda.
Jenis pengikatan data | Deskripsi |
---|---|
Pengikatan data sederhana | Kemampuan kontrol untuk mengikat ke elemen data tunggal, seperti nilai dalam kolom dalam tabel himpunan data. Pengikatan data sederhana adalah jenis pengikatan yang khas untuk kontrol seperti TextBox kontrol atau Label kontrol, yang merupakan kontrol yang biasanya hanya menampilkan satu nilai. Bahkan, properti apa pun pada kontrol dapat terikat ke bidang dalam database. Ada dukungan ekstensif untuk fitur ini di Visual Studio. Untuk informasi selengkapnya, lihat Menavigasi data dan Membuat kontrol terikat sederhana (Formulir Windows .NET). |
Pengikatan data kompleks | Kemampuan kontrol untuk mengikat ke lebih dari satu elemen data, biasanya lebih dari satu rekaman dalam database. Pengikatan kompleks juga disebut pengikatan berbasis daftar. Contoh kontrol yang mendukung pengikatan kompleks adalah DataGridViewkontrol , , ListBoxdan ComboBox . Untuk contoh pengikatan data kompleks, lihat Cara: Mengikat Formulir Windows ComboBox atau Kontrol ListBox ke Data. |
Komponen sumber pengikatan
Untuk menyederhanakan pengikatan data, Formulir Windows memungkinkan Anda untuk mengikat sumber data ke BindingSource komponen lalu mengikat kontrol ke BindingSource
. Anda dapat menggunakan BindingSource
dalam skenario pengikatan sederhana atau kompleks. Dalam kedua kasus, BindingSource
bertindak sebagai perantara antara sumber data dan kontrol terikat yang menyediakan manajemen mata uang pemberitahuan perubahan dan layanan lainnya.
Skenario umum yang menggunakan pengikatan data
Hampir setiap aplikasi komersial menggunakan informasi yang dibaca dari sumber data dari satu jenis atau jenis lainnya, biasanya melalui pengikatan data. Daftar berikut menunjukkan beberapa skenario paling umum yang menggunakan pengikatan data sebagai metode presentasi dan manipulasi data.
Skenario | Deskripsi |
---|---|
Pelaporan | Laporan menyediakan cara yang fleksibel bagi Anda untuk menampilkan dan meringkas data Anda dalam dokumen cetak. Biasanya membuat laporan yang mencetak konten sumber data yang dipilih baik ke layar atau ke printer. Laporan umum mencakup daftar, faktur, dan ringkasan. Item diformat ke dalam kolom daftar, dengan subitem yang diatur di bawah setiap item daftar, tetapi Anda harus memilih tata letak yang paling sesuai dengan data. |
Entri data | Cara umum untuk memasukkan sejumlah besar data terkait atau untuk meminta informasi kepada pengguna adalah melalui formulir entri data. Pengguna dapat memasukkan informasi atau memilih pilihan menggunakan kotak teks, tombol opsi, daftar drop-down, dan kotak centang. Informasi kemudian dikirimkan dan disimpan dalam database, yang strukturnya didasarkan pada informasi yang dimasukkan. |
Hubungan master/detail | Aplikasi master/detail adalah salah satu format untuk melihat data terkait. Secara khusus, ada dua tabel data dengan hubungan yang terhubung dalam contoh bisnis klasik, tabel "Pelanggan" dan tabel "Pesanan" dengan hubungan antara mereka yang menautkan pelanggan dan pesanan masing-masing. Untuk informasi selengkapnya tentang membuat aplikasi master/detail dengan dua kontrol Formulir WindowsDataGridView, lihat Cara: Membuat Formulir Master/Detail Menggunakan Kontrol DataGridView Dua Formulir Windows |
Tabel Pencarian | Skenario presentasi/manipulasi data umum lainnya adalah pencarian tabel. Seringkali, sebagai bagian dari tampilan data yang ComboBox lebih besar, kontrol digunakan untuk menampilkan dan memanipulasi data. Kuncinya adalah bahwa data yang ditampilkan dalam ComboBox kontrol berbeda dari data yang ditulis ke database. Misalnya, jika Anda memiliki ComboBox kontrol yang menampilkan barang-barang yang tersedia dari toko kelontong, Anda mungkin ingin melihat nama-nama produk (roti, susu, telur). Namun, untuk memudahkan pengambilan informasi dalam database dan untuk normalisasi database, Anda mungkin akan menyimpan informasi untuk item tertentu dari pesanan tertentu sebagai nomor item (#501, #603, dan sebagainya). Dengan demikian, ada koneksi implisit antara "nama ramah" item grocery dalam ComboBox kontrol pada formulir Anda dan nomor item terkait yang ada dalam urutan. Ini adalah esensi dari pencarian tabel. Untuk informasi selengkapnya, lihat Cara: Membuat Tabel Pencarian dengan Komponen Formulir Windows BindingSource. |
Baca juga
.NET Desktop feedback