DataGrid

Kontrol DataGrid memungkinkan Anda menampilkan dan mengedit data dari berbagai sumber, seperti dari database SQL, kueri LINQ, atau sumber data lain yang dapat diikat. Untuk informasi selengkapnya, lihat Gambaran Umum Sumber Pengikatan .

Cuplikan layar memperlihatkan kontrol DataGrid dengan baris data.

Pengikatan ke data

Untuk mengikatkan DataGrid ke data, atur properti ItemsSource ke sebuah implementasi IEnumerable. Setiap baris dalam kisi data terikat ke objek di sumber data, dan setiap kolom di kisi data terikat ke properti objek data.

DataGrid Agar antarmuka pengguna diperbarui secara otomatis saat item ditambahkan atau dihapus dari data sumber, DataGrid harus terikat ke koleksi yang mengimplementasikan INotifyCollectionChanged antarmuka, seperti ObservableCollection<T>. Untuk mencerminkan perubahan properti secara otomatis, objek dalam koleksi sumber harus mengimplementasikan INotifyPropertyChanged antarmuka. Untuk informasi selengkapnya, lihat Gambaran Umum Pengikatan Data.

Kolom dapat menampilkan teks, kontrol, seperti ComboBox, atau konten WPF lainnya, seperti gambar, tombol, atau konten apa pun yang terkandung dalam templat. Anda dapat menggunakan DataGridTemplateColumn untuk menampilkan data yang ditentukan dalam templat. Tabel berikut mencantumkan tipe kolom yang disediakan secara default.

Tipe Kolom yang Dihasilkan Jenis Data
DataGridTextColumn String
DataGridCheckBoxColumn Boolean
DataGridComboBoxColumn Enum
DataGridHyperlinkColumn Uri

Membuat kolom secara otomatis

Secara default, DataGrid kontrol menghasilkan kolom secara otomatis saat Anda mengatur ItemsSource properti . Jenis kolom yang dihasilkan bergantung pada jenis data dalam kolom, seperti yang diperlihatkan dalam tabel sebelumnya.

Saat kolom dibuat secara otomatis, Anda dapat menangani AutoGeneratingColumn event untuk menyesuaikan atau membatalkan kolom sebelum ditambahkan ke DataGrid. Jika Anda menambahkan kolom yang ditentukan pengguna dan kolom yang dibuat secara otomatis ke DataGrid, kolom yang ditentukan pengguna ditambahkan terlebih dahulu. Untuk menyusun ulang urutan tampilan kolom, Anda bisa mengatur DisplayIndex properti untuk kolom individual.

Anda dapat mencegah pembuatan kolom otomatis dengan mengatur properti ke AutoGenerateColumnsfalse. Ini berguna jika Anda ingin membuat dan mengonfigurasi semua kolom secara eksplisit.

Kolom khusus

DataGridTemplateColumn Gunakan jenis untuk menentukan kolom kustom jika jenis kolom bawaan tidak memenuhi kebutuhan Anda. Jenis DataGridTemplateColumn menyediakan properti CellTemplate dan CellEditingTemplate yang memungkinkan Anda menentukan templat konten untuk mode tampilan maupun pengeditan. Misalnya, Anda dapat menentukan kolom kustom untuk tanggal. CellTemplate dapat menentukan TextBlock untuk menampilkan tanggal, dan CellEditingTemplate dapat menentukan DatePicker kontrol untuk mengedit tanggal.

Anda dapat menggunakan Columns koleksi untuk menambahkan, menyisipkan, menghapus, dan mengubah kolom apa pun secara terprogram dalam kontrol pada waktu proses. IsAutoGenerated Periksa properti untuk menentukan apakah kolom dibuat secara otomatis atau ditentukan pengguna. Kolom yang dihasilkan secara otomatis ditambahkan, dihapus, atau diregenerasi saat ItemsSource berubah.

DataGrid dapat dikustomisasi dalam tampilan, seperti font sel, warna, dan ukuran. DataGrid mendukung semua fungsionalitas gaya dan templat kontrol WPF lainnya. DataGrid juga menyertakan perilaku default dan dapat disesuaikan untuk pengeditan, pengurutan, dan validasi.

Pengeditan

Secara default, Anda dapat mengedit item langsung di DataGrid. Untuk menjamin bahwa pengeditan dapat diterapkan dan dibatalkan dengan benar, objek di DataGrid harus mengimplementasikan IEditableObject antarmuka. Anda dapat mengatur properti IsReadOnly ke true untuk menonaktifkan pengeditan di DataGrid.

DataGrid memiliki dukungan bawaan untuk perintah pengeditan berikut:

Command Kunci Default
BeginEditCommand F2
CancelEditCommand ESC
CommitEditCommand ENTER
DeleteCommand DELETE

Anda menempatkan sel saat ini ke mode edit dengan mengkliknya atau menekan F2. Pengeditan tingkat sel diterapkan saat Anda berpindah ke sel lain di baris yang sama atau tekan ENTER saat sel dalam mode edit. Semua pengeditan dalam baris diterapkan saat Anda berpindah ke baris lain atau menekan ENTER saat baris dalam mode edit. Anda membatalkan pengeditan sel dengan menekan ESC satu kali, dan membatalkan semua pengeditan berturut-turut dengan menekan ESC dua kali. Untuk informasi selengkapnya tentang melakukan dan membatalkan pengeditan secara terprogram, lihat BeginEditmetode , CommitEdit, dan CancelEdit .

Atur CanUserAddRows properti dan CanUserDeleteRows untuk menentukan apakah pengguna dapat menambahkan atau menghapus baris. Pengguna dapat menghapus baris yang dipilih dengan menekan tombol DELETE. CanUserAddRows Jika properti diatur ke true, baris item baru ditambahkan sebagai baris terakhir di DataGrid. Anda dapat mengatur nilai default untuk item baru dengan menangani InitializingNewItem event.

Nota

Izin tindakan pengeditan dipengaruhi oleh banyak faktor, termasuk IsReadOnly dan IsEnabled status DataGrid, serta apakah pengumpulan data yang mendasari memungkinkan tindakan tersebut.

Pilihan

Secara default, seluruh baris dipilih saat pengguna mengklik sel di DataGrid, dan pengguna dapat memilih beberapa baris. Anda dapat mengatur SelectionUnit properti untuk menentukan apakah pengguna dapat memilih sel, baris penuh, atau keduanya. Atur SelectionMode properti untuk menentukan apakah beberapa baris atau sel dapat dipilih, atau hanya satu baris atau sel.

Anda bisa mendapatkan informasi tentang sel yang dipilih dari properti SelectedCells. Anda bisa mendapatkan informasi tentang sel yang pilihannya telah berubah dalam SelectedCellsChangedEventArgsSelectedCellsChanged peristiwa. Panggil metode SelectAllCells atau UnselectAllCells untuk memilih atau membatalkan pilihan semua sel secara terprogram. Untuk informasi selengkapnya, lihat Perilaku Keyboard dan Mouse Default di Kontrol DataGrid.

Pengelompokan, pengurutan, dan pemfilteran

Secara bawaan, Anda bisa mengurutkan item dalam DataGrid dengan mengklik header kolom. Anda bisa sesuaikan pengurutan dengan mengelola event Sorting. Untuk membatalkan pengurutan default, atur properti ke Handledtrue. Anda juga dapat mengurutkan data sumber sebelum ditampilkan di DataGrid.

Untuk mengelompokkan, mengurutkan, dan memfilter data di DataGrid, Anda mengikat DataGrid ke ICollectionView implementasi yang mendukung operasi ini. Anda kemudian melakukan operasi pada tampilan koleksi. Saat item dikelompokkan dalam DataGrid, Anda dapat menentukan GroupStyle yang menentukan tampilan setiap grup. Anda menerapkan GroupStyle dengan menambahkannya ke koleksi GroupStyle dari DataGrid. Jika Anda memiliki beberapa tingkat pengelompokan, Anda dapat menerapkan gaya yang berbeda ke setiap tingkat grup. Gaya diterapkan menurut urutan penentuannya. Untuk informasi selengkapnya, lihat Cara: Mengelompokkan, Mengurutkan, dan Memfilter Data di Kontrol DataGrid.

Validation

DataGrid memungkinkan Anda melakukan validasi pada tingkat sel dan baris. Dengan validasi tingkat sel, Anda memvalidasi properti individual objek data terikat saat pengguna memperbarui nilai. Dengan validasi tingkat baris, Anda memvalidasi seluruh objek data saat pengguna menerapkan perubahan pada baris. Anda dapat memberikan umpan balik visual yang dikustomisasi untuk kesalahan validasi tingkat baris dengan mengatur RowValidationErrorTemplate properti , atau Anda dapat menggunakan indikator kesalahan default. Untuk membuat aturan validasi kustom, buat kelas yang berasal dari ValidationRule kelas dan terapkan Validate metode . Tambahkan aturan validasi kustom ke RowValidationRules koleksi.

Tugas umum

Tabel berikut ini mencantumkan beberapa tugas umum untuk DataGrid dan cara menyelesaikannya. Dengan melihat API terkait, Anda dapat menemukan informasi lebih lanjut dan kode sampel.

Skenario Pendekatan
Warna latar belakang alternatif Atur properti AlternationCount ke 2 atau lebih, lalu tetapkan Brush ke properti RowBackground dan AlternatingRowBackground.
Menentukan perilaku pemilihan sel dan baris Atur properti SelectionMode dan SelectionUnit.
Mengkustomisasi tampilan visual header, sel, dan baris Terapkan Style baru ke properti ColumnHeaderStyle, RowHeaderStyle, CellStyle, atau RowStyle.
Mengatur opsi ukuran Atur properti Height, MaxHeight, MinHeight, Width, MaxWidth, atau MinWidth. Untuk informasi selengkapnya, lihat opsi ukuran dalam Kontrol DataGrid pada .
Mengakses item terpilih Periksa properti SelectedCells untuk mendapatkan sel yang dipilih dan properti SelectedItems untuk mendapatkan baris yang dipilih. Untuk informasi selengkapnya, lihat SelectedCells .
Mengkustomisasi interaksi pengguna akhir Atur properti CanUserAddRows, CanUserDeleteRows, CanUserReorderColumns, CanUserResizeColumns, CanUserResizeRows, dan CanUserSortColumns.
Membatalkan atau mengubah kolom yang dihasilkan secara otomatis Tangani peristiwa AutoGeneratingColumn.
Membekukan kolom Atur properti FrozenColumnCount ke 1 dan pindahkan kolom ke posisi paling kiri dengan mengatur properti DisplayIndex ke 0.
Menggunakan data XML sebagai sumber data Ikat ItemsSource pada DataGrid ke kueri XPath yang mewakili kumpulan item. Buat setiap kolom di DataGrid. Ikat setiap kolom dengan mengatur XPath pada pengaitan ke kueri yang mengambil properti dari sumber objek. Misalnya, lihat DataGridTextColumn.
Judul Deskripsi
Elemen DataGrid Menjelaskan jenis elemen yang membentuk DataGrid, termasuk DataGridCell, DataGridRow, DataGridRowHeader, DataGridColumnHeader, dan DataGridColumnHeadersPresenter.
Panduan : Menampilkan Data dari Database SQL Server dalam Kontrol "DataGrid" Menjelaskan cara menyiapkan proyek WPF baru, menambahkan Elemen Kerangka Kerja Entitas, mengatur sumber, dan menampilkan data dalam DataGrid.
Cara Menambahkan Detail Baris ke Kontrol DataGrid Menjelaskan cara membuat detail baris untuk DataGrid.
Cara Menerapkan Validasi dengan Kontrol DataGrid Menjelaskan cara memvalidasi nilai dalam sel dan baris DataGrid, dan menampilkan umpan balik validasi.
Perilaku Default Keyboard dan Mouse di Kontrol DataGrid Menjelaskan cara berinteraksi dengan kontrol DataGrid dengan menggunakan keyboard dan mouse.
Cara: Mengelompokkan, Mengurutkan, dan Memfilter Data pada Kontrol DataGrid Menjelaskan cara menampilkan data dalam DataGrid dengan cara yang berbeda dengan mengelompokkan, mengurutkan, dan memfilter data.
Pilihan Pengukuran Kontrol DataGrid Menjelaskan cara mengontrol ukuran absolut dan otomatis dalam DataGrid.

Menyesuaikan DataGrid

Kontrol DataGrid mendukung opsi pemformatan tabel umum, seperti latar belakang baris alternatif dan kemampuan untuk menampilkan atau menyembunyikan header, garis kisi, dan bilah gulir. Selain itu, kontrol menyediakan beberapa properti gaya dan templat yang dapat Anda gunakan untuk sepenuhnya mengubah tampilan kontrol dan baris, kolom, header, dan selnya.

Untuk menyesuaikan perilaku DataGrid, Anda dapat menangani peristiwa untuk perubahan pilihan, pengeditan sel, dan penyusunan ulang kolom. DataGrid juga mengekspos beberapa event untuk daur ulang baris yang dapat Anda tangani untuk menyesuaikan baris.

Untuk menerapkan pengaturan properti yang sama ke beberapa DataGrid kontrol, gunakan Style properti . Anda dapat memodifikasi default ControlTemplate untuk memberi kontrol tampilan yang unik. Untuk informasi selengkapnya tentang membuat ControlTemplate, lihat Membuat templat untuk kontrol.

Properti dependensi untuk kontrol ini mungkin diatur oleh gaya bawaan dari kontrol tersebut. Jika properti diatur oleh gaya default, properti mungkin berubah dari nilai defaultnya saat kontrol muncul di aplikasi. Gaya default ditentukan oleh tema desktop mana yang digunakan saat aplikasi berjalan.

Nota

Mengatur properti visual hanya memiliki efek jika properti tersebut ada di templat default kontrol dan diatur dengan menggunakan TemplateBinding.

Gaya dan templat

Bagian ini menjelaskan gaya dan templat untuk DataGrid kontrol. Anda dapat memodifikasi default ControlTemplate untuk memberi kontrol tampilan yang unik. Untuk informasi selengkapnya, lihat Gaya dan Templat dan Membuat templat untuk kontrol.

Properti konten

Kontrol DataGrid menggunakan ItemsSource properti untuk menentukan sumber data. Sumber data dapat menjadi koleksi yang dapat diikat, seperti database, kueri LINQ, atau sumber data lain yang dapat diikat.

Bagian

Kontrol ini tidak menentukan bagian templat apa pun.

Keadaan visual

Tabel berikut mencantumkan status visual untuk DataGrid kontrol.

Nama VisualState Nama VisualStateGroup Deskripsi
Biasa CommonStates Kontrol berada dalam keadaan normal.
Disabled CommonStates Kontrol dinonaktifkan.
Sah StatusValidasi Kontrol valid dan tidak memiliki kesalahan validasi.
FokusTidakValid StatusValidasi Kontrol memiliki kesalahan validasi dan memiliki fokus keyboard.
Tidak valid dan Tidak Difokuskan StatusValidasi Komponen memiliki kesalahan validasi tetapi tidak memiliki fokus pada papan ketik.

Jenis elemen DataGrid

Kontrol DataGrid terdiri dari beberapa jenis elemen. Untuk informasi tentang elemen-elemen ini beserta gaya dan templatnya, lihat Elemen DataGrid.

Lihat juga