Tapis data yang dipaparkan dalam DataGridView tanpa mengubah suai sumber data yang mendasari DataGridView. Walaupun data yang sangat mudah melalui paparan lalai, penapis yang terikat pada dataset dataset melalui DataMember lebih mencabar.
Senario 1: Penapis secara langsung DataTable
Apabila sumber data DataGridView ditetapkan secara langsung kepada DataTable, ia boleh ditapis dengan mengubah suai harta DataTable DefaultView.RowFilter. Kaedah ini berkesan kerana DataTable secara langsung terikat kepada DataGridView untuk membolehkan operasi langsung datanya.
Scene 2: DataTable
Jika sumber data DataGridView adalah pengikat dan sumber data bindingsource adalah sumber data, penapis boleh dilakukan dengan mengubah suai harta bindingsource.filter. Kaedah ini berkesan kerana bindingsource bertindak sebagai pertengahan antara datatable dan datagridview, yang membolehkan penapisan tanpa mengubah suai data sendiri. Senario 3: DataMeatable terikat kepada dataset
Apabila sumber data DataGridView adalah dataset, dan DataMember ditetapkan ke nama DataTable, penapis menjadi lebih rumit. Perbezaan utama adalah bahawa DataGridView tidak terikat secara langsung kepada datatible, tetapi yang mengikat datatif ke dataset.
Sebab kegagalan penapisan di tempat kejadian 3 Ia terikat kepada dataset dan datamember. Mengubah defauuultview DataTable tidak akan dapat dilihat dalam DataGridView kerana DataGridView tidak menyedari perubahan itu.
Penyelesaian: Penapis dataview dan mengikatnya ke datagridview
Untuk menyelesaikan masalah ini, buat DataView berdasarkan DataTable, gunakan penapis ke DataView, dan tetapkan DataSource of DataGridView ke DataView. Kaedah ini mengekalkan dataset asal dan membolehkan penapisan tanpa menukar datagridView DataGridView.
Contoh kod ds.Tables[0].DefaultView.RowFilter
Atas ialah kandungan terperinci Bagaimana untuk Menapis DataGridView Terikat pada Set Data dengan Berkesan melalui DataMember?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!