Antarmuka yang Terkait dengan Pengikatan Data
Dengan ADO.NET, Anda dapat 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-objek ini dapat menawarkan berbagai tingkat fungsionalitas dan kompleksitas, mulai dari pengikatan data dasar, hingga memberikan dukungan waktu desain, pemeriksaan kesalahan, pemberitahuan perubahan, atau bahkan dukungan untuk pembatalan terstruktur perubahan yang dilakukan pada data itu sendiri.
Konsumen Antarmuka Pengikatan Data
Bagian berikut menjelaskan dua grup objek antarmuka. Grup pertama mencantumkan antarmuka yang diimplementasikan pada sumber data oleh penulis sumber data. Antarmuka ini dirancang untuk dikonsumsi oleh konsumen sumber data, yang dalam kebanyakan kasus Formulir Windows kontrol atau komponen. Grup kedua mencantumkan antarmuka yang 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
Antarmuka berikut dirancang untuk digunakan oleh kontrol Formulir Windows:
Antarmuka IList
Kelas yang mengimplementasikan IList antarmuka bisa berupa Array, , ArrayListatau CollectionBase. Ini adalah daftar terindeks item jenis Object. Daftar ini 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<T> 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, baik saat item daftar berubah (misalnya, item ketiga dalam daftar pelanggan memiliki perubahan pada bidang Alamat), serta ketika daftar itu sendiri berubah (misalnya, jumlah item dalam daftar meningkat atau berkurang). Pemberitahuan perubahan penting jika Anda berencana untuk memiliki beberapa kontrol yang terikat ke data yang sama, dan Anda ingin perubahan data yang dibuat di salah satu kontrol 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, serta fungsionalitas pemfilteran dan pengurutan tingkat lanjut. Implementasi ini menawarkan pemfilteran berbasis string, dan pengurutan multikolom 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 memberi Anda BeginEditmetode , EndEdit, dan CancelEdit , yang memungkinkan Anda untuk mengembalikan perubahan yang dilakukan pada objek. Berikut ini adalah penjelasan singkat tentang fungsi BeginEditmetode , , EndEditdan CancelEdit dan dan bagaimana mereka bekerja bersama satu sama lain untuk mengaktifkan kemungkinan pembatalan 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 memanggil BeginEdit beberapa kali dalam cakupan satu transaksi edit (misalnya, BeginEdit, BeginEdit, EndEdit). IEditableObject Implementasi harus melacak apakah BeginEdit telah dipanggil dan mengabaikan panggilan berikutnya ke BeginEdit. Karena metode ini dapat dipanggil beberapa kali, penting bahwa panggilan berikutnya ke metode ini tidak merusak; artinya, panggilan berikutnya BeginEdit tidak dapat menghancurkan pembaruan yang telah dilakukan atau mengubah data yang disimpan pada panggilan pertama BeginEdit .
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 mengimplementasikan ICancelAddNew 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 kemampuan 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. Antarmuka ISupportInitializeNotification 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 Pembuat 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.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk